Schrift
[thread]7729[/thread]

Warnung oder was



<< >> 10 Einträge, 1 Seite
leissi
 2006-02-22 17:40
#63215 #63215
User since
2005-07-06
84 Artikel
BenutzerIn
[default_avatar]
Hallo,

hab ein Problem.

Ich lese in meinem Script eine ConfigDatei aus und übergebe hieraus in einem Hash den Wert z.B. Verzeichnispfad. Der dann gesetzte Hashwert wird dann an eine Subroutine übergeben!
Das Script läuft sauber durch aber Perl gibt mir beim Durchlauf folgendes aus:

Name "main:: backupPath" used only once: possible typo at H:\Perl\Backupcheck\T1.pl line 27.

Was bedeutet das im Klartext?????

Danke für Eure Hilfe
nepos
 2006-02-22 17:42
#63216 #63216
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Dass Perl diesen Bezeichner "main::backupPath" im gesamten Skript nur einmal gesehen hat und es deshalb eventuell ein Vertipper sein koennte. Oder auf eine Variable, die man deklariert hat, aber dann nie mehr nutzt.
FIFO
 2006-02-22 17:45
#63217 #63217
User since
2005-06-01
469 Artikel
BenutzerIn

user image
use strict und use warnings verwendet? Sieht nach unbeabsichtigtem bareword aus (z.B. vergessenes $-Prefix)
Everyone knows that debugging is twice as hard as writing a program in the first place. So if you're as clever as you can be when you write it, how will you ever debug it? -- Brian Kernighan: "The Elements of Programming Style"
leissi
 2006-02-22 17:50
#63218 #63218
User since
2005-07-06
84 Artikel
BenutzerIn
[default_avatar]
Hi,
also ganz am Anfang werden die Hashwerte so gesetzt


Code: (dl )
1
2
3
4
# Hier wird Hash-Wert gesetzt
$Backup{"Backup"} = $backupPath;
$cfg{"otaLogPath"} = $otaLogPath;
$TRN{"TrnPath"} = $TrnPath;


und dann so in die Subroutine übergebn!
Code: (dl )
1
2
     my $numberProjects = $#pjName;
my $backupPath = $Backup{"Backup"};


Mach ich was falsch???\n\n

<!--EDIT|leissi|1140623611-->
FIFO
 2006-02-22 18:21
#63219 #63219
User since
2005-06-01
469 Artikel
BenutzerIn

user image
[quote=leissi,22.02.2006, 16:50]und dann so in die Subroutine übergebn!
Code: (dl )
1
2
     my $numberProjects = $#pjName;
my $backupPath = $Backup{"Backup"};
[/quote]
Wo ist da die Subroutine?

Wann/wo findet die Deklaration (my $backupPath ...) da statt?
In oder außerhalb der sub (Lexikalisierungsproblem)?
Everyone knows that debugging is twice as hard as writing a program in the first place. So if you're as clever as you can be when you write it, how will you ever debug it? -- Brian Kernighan: "The Elements of Programming Style"
leissi
 2006-02-23 09:37
#63220 #63220
User since
2005-07-06
84 Artikel
BenutzerIn
[default_avatar]
Hallo,

also an dieser Stelle wird der Hashwert gesetzt:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
   my $parameterFile = "Main.cfg";

#
# parameter und funktion fuer das script einlesen
#

open(IN, $parameterFile) || die "Paramterfile $parameterFile nicht gefunden!";
@par = <IN>;
close(IN);
eval( join("\n", @par) );
#print $otaLogPath "\n";

# Hier wird Hash-Wert gesetzt
$Backup{"Backup"} = $backupPath;
$cfg{"otaLogPath"} = $otaLogPath;
$TRN{"TrnPath"} = $TrnPath;

my $ausgabe_Datei = "backupCheck.txt";
open(LogDatei, ">backupCheck.txt") or die "Kann Log Datei nicht anlegen : $!";


und hier wird der Hash in die Subroutine übergeben(komplette Subroutine):

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
sub runOtaCheck
{

# Flag, ob die Gesamtprüfung positiv ist.
# 0 = nein, d.h. In mindestens einem Fall war keine aktuelle OTA-Datei vorhanden.
# 1 = ja, d.h. es ware stets eine aktuelle OTA-Datei vorhanden.
my $runOTACheck = 1;
#Hashes-Wert wird übergeben und ausgelesen!
my $dir = $cfg{"otaLogPath"};

&printLogEntry ("INFO " , "OTA-Verzeichnischeck " . $dir . " beginnt! \n");


opendir(DIR,$dir) or die $!; # Verzeichnis "öffnen"


my @verzeichnisse = grep{-f $dir .'/'.$_}readdir(DIR);
my $bool = 0; # 0= Nein
for my $file(@verzeichnisse)
{
if(existsFile($dir.'/'.$file,1))
{
$bool = 1; # 1 = Ja
&printLogEntry ("DEBUG" , "OTA Dateien vorhanden" . $bool . " OTA-Dateien gefunden!");
&printLogEntry ("DEBUG" , $file . @verzeichnisse . " OTA-Dateien im Verzeichnis " . $dir . " vorhanden!");
}

}
if ($bool == 1) # 1 = Ja
{
&printLogEntry ("INFO " ,"Es besteht in dem Verzeichnis mind. eine aktuelle OTA-Dateien!");
}
else
{
&printLogEntry ("ERROR","Es besteht in dem Verzeichnis" . $dir . "keine aktuelle Backupdatei!");
$runOTACheck = 0;
}
## Hier wird nach Durchlauf der Kontrolle ein Statment abgegeben wenn keine aktuellen Dateien vorhanden sind!
unless($runOTACheck)
{
&printLogEntry ("ERROR","OTA-Dateiverzeichnis ist unvollständig !! Bitte prüfen!!!");
}
return $runOTACheck # Hier wird der ermittelte Rückgabewert aus der Subroutine übergeben!

} # End of: sub runOtaCheck

Hoffe das ist jetzt etwas verständlicher!

Gruss
leissi
renee
 2006-02-23 10:54
#63221 #63221
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Diese Sub hat mit dem $backupPath gar nichts zu tun! Du solltest Dir unbedingt Wiki:use strict angewoehnen!

In Deinem Code, den Du hier postest, taucht das $backupPath tatsaechlich nur einmal auf...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
leissi
 2006-02-23 11:17
#63222 #63222
User since
2005-07-06
84 Artikel
BenutzerIn
[default_avatar]
Hi,
ich habe drei Subroutinen hier die Subroutune in der die Anweisung übergeben wird

Quote
#1 Block Prüfung BackupCheck-Verzeichnis
sub runSqlBackCheck
{



# Flag, ob die Gesamtprüfung positiv ist.
# 0 = nein, d.h. In mindestens einem Fall war keine aktuelle Backup-Datei vorhanden.
# 1 = ja, d.h. es ware stets eine aktuelle Backup-Datei vorhanden.
my $runSQLBakCheck = 1;


&printLogEntry ("INFO ","Backup-Verzeichnischeck beginnt!");



#wird erst später aus DOMS.mdb ermittelt, vorerst wird mit Hardcodierten Werten gearbeitet

my (@pjDomain,@pjName);

$pjDomain[0] = "ZITA_PKM";
$pjName [0] = "Phoenix";

$pjDomain[1] = "ZITA_ATF";
$pjName [1] = "ZITA_522";

$pjDomain[2] = "ZITA_ATF";
$pjName [2] = "TLA";

my $numberProjects = $#pjName;
my $backupPath = $Backup{"Backup"};
#my $backupPath = 'H:\\Perl\\BackupCheck\\_backup';


# Nun wird für jedes TestDirector-Projekt überprüft, ob im
# Backup-Bereich des Servers ein aktuelles Backup vorliegt.
for (my $i = 0; $i <= $numberProjects; $i++)
{
my $bkupDirectory = $backupPath . "\\" . $pjDomain[$i] . "_" . $pjName[$i] . "_db";
my $verzeichnisse = 0;
&printLogEntry ("INFO ","Prüfe Existenz von " . $bkupDirectory);

if ( -e $bkupDirectory )
{
&printLogEntry ("DEBUG","Verzeichnis ist vorhanden!");
opendir(DIR,$bkupDirectory);
$verzeichnisse = 1;
my @verzeichnisse = grep{-f $bkupDirectory .'/'.$_}readdir(DIR);
my $bool = 0;
for my $file(@verzeichnisse)
{
if(existsFile($bkupDirectory.'/'.$file,24))
{
$bool = 1;
&printLogEntry ("DEBUG","Backup vorhanden" . $bool . " Backupdatei gefunden!");
&printLogEntry ("DEBUG",$file . @verzeichnisse . " Backupdateien im Verzeichnis " . $bkupDirectory . " vorhanden!") ;
}

}
if ($bool == 1)
{
&printLogEntry ("INFO ","Es besteht in dem Verzeichnis mind. eine aktuelle Backupdatei!");
}
else
{
&printLogEntry ("ERROR","Es besteht in dem Verzeichnis" . $bkupDirectory . "keine aktuelle Backupdatei!");
$runSQLBakCheck = 0;
}
## Hier wird nach Durchlauf der Kontrolle ein Statment abgegeben wenn Error auftrat!
unless($runSQLBakCheck)
{
&printLogEntry ("ERROR","In einem bzw. mehreren Backupverzeichnissen liegen keine aktuellen Backupdateien vor!! Bitte prüfen!!!");

}
}
else
{
&printLogEntry ("ERROR","Das zu prüfende Backupverzeichnis wurde nicht gefunden! Bitte prüfen!!");
$runSQLBakCheck = 0;
} # end of: if ( -e $bkupDirectory )
} # end of: for (my $i = 0; $i <= $numberProjects; $i++)
return $runSQLBakCheck # Hier wird der ermittelte Rückgabewert aus der Subroutine übergeben!
} # end of: sub runSqlBackCheck


Hoffe jetzt klarer bei dem vorhergehenden wurde $cfg{"otaLogPath"} = $otaLogPath;

an die vorhergehende Sub in meinem vorhergehenden Beitrag übergeben auch hier kommt die gleiche Warnung!

Gruss\n\n

<!--EDIT|leissi|1140686303-->
renee
 2006-02-23 11:33
#63223 #63223
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Den Hinweis mit dem Gueltigkeitsbereich hat FIFO Dir schon geliefert...

Edit: Dein $backupPath ist nur in der Subroutine gueltig. Ein Wiki:use strict haette Dich eher auf den Loesungsweg gebracht...\n\n

<!--EDIT|renee|1140687360-->
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
leissi
 2006-02-23 13:23
#63224 #63224
User since
2005-07-06
84 Artikel
BenutzerIn
[default_avatar]
He Renee,

jetzt hab ichs vielen Dank ! Hab mir das in Ruhe durchgelesen und nach mehrmaligen raufhauen auf den Hinterkopf ist mir ein Licht aufgegangen! Also vielen Dank für den "RICHTUNGSHINWEIS"!!!
<< >> 10 Einträge, 1 Seite



View all threads created 2006-02-22 17:40.