candid Geschrieben 9. Februar 2009 Geschrieben 9. Februar 2009 Hallo zusammen, ich hoffe dass mir jemand weiterhelfen kann. Ich habe erst vor wenigen Tagen mit Perl angefangen und hänge nun an folgender Zeile: unless ($ARGV[0]) { push(@ARGV, $Dir); $Dir enthält eine Pfadangabe. Unless ist ja ähnlich wie eine If-Bedinung, aber die Bedinung muss ja negativ sein. Bedeutet dies hier, wenn $ARGV[0] einen Inhalt besitzt, wird dieser in einer Datei im Pfad $Dir hinzugefügt? Ich würde mich sehr über Eure Hilfe freuen. Grüße: Candid Zitieren
bigvic Geschrieben 9. Februar 2009 Geschrieben 9. Februar 2009 Hi, unless ($ARGV[0]) { push(@ARGV, $Dir); Es bedeutet wenn $ARGV[0] nicht leer ist wird das Array @ARGV mit $Dir erweitert. ciao, vic Zitieren
candid Geschrieben 9. Februar 2009 Autor Geschrieben 9. Februar 2009 Hey Victorinox, vielen Dank für deine schnelle Hilfe!! Super, freut mich riesig, dass Deine Antwort so schnell kam. Grüße: Candid Zitieren
candid Geschrieben 9. Februar 2009 Autor Geschrieben 9. Februar 2009 Hallo zusammen, Eure bisherige Hilfe hat mir schon sehr weitergeholfen. Aber nun hänge ich an folgender Geschichte: my $host= $1; &d("\$host = #$host#"); if ( !$host_used{$host} ) { $hostgroup_used{$host} = 1; Mir ist hierbei nicht klar, wofür das "&d" steht bzw. was hier vor sich geht: ( !$host_used{$host} ) wenn es ein Array gewesen wäre ich davon ausgegangen, dass es eine Zuweisung gewesen wäre. Aber so kann ich nur sehr sehr wenig damit anfangen. Ich würde mich über Eure Hilfe sehr freuen! Grüße: Candid Zitieren
bigvic Geschrieben 9. Februar 2009 Geschrieben 9. Februar 2009 Hi, ich empfehle dir: Tutorials - perldoc.perl.org FAQs - perldoc.perl.org Es ist schon genug Herausforderung als Einsteiger einen eigenen Quelltext zu schreiben, aber einen fremden QT zu verstehen ... - damit wirst du nicht glücklich. Ueberleg dir nochmal, ob du dir das wirklich antun willst. &d = Funktionsaufruf $host_used{$host} = Hash (Assoziatives Array) ( !$host_used{$host} ) = Ueberprüfung, ob der zugehörige Wert des Keys "wahr" ist ciao, vic Zitieren
candid Geschrieben 9. Februar 2009 Autor Geschrieben 9. Februar 2009 Hallo Victorinox, Du warst mal wieder mein Retter! Naja also ich bastel gerade an dem Quelltext, weil ich den komplett umschreiben soll - leider bleibt mir da nichts anderes übrig als das durchzuziehen. Vielen Dank nochmal für die schnelle Hilfe. :uli Grüße: Candid Zitieren
unbenannt Geschrieben 10. Februar 2009 Geschrieben 10. Februar 2009 Es bedeutet wenn $ARGV[0] nicht leer ist wird das Array @ARGV mit $Dir erweitert. Der Block nach einem unless wird nur ausgeführt, wenn die Bedingung _nicht wahr ist. D.h. in diesem Fall, dass $Dir dem Array nur hinzugefügt wird, wenn $ARGV[0] keinen Wert beinhaltet. Statt "unless" könnte man hier auch schreiben if (!$ARGV[0]{ push(@ARGV, $Dir);} D.h. wenn keine Kommandozeilenparameter übergeben wurden, wird die Pfadangabe in dieses Array geschrieben. Scheint mir eine recht merkwürdige Art zu sein, ein Skript mit einem Default-Wert starten zu lassen. Zitieren
bigvic Geschrieben 10. Februar 2009 Geschrieben 10. Februar 2009 Japp, das Wort "nicht" hat sich da irgendwie mit reingeschoben. Zitieren
candid Geschrieben 13. Februar 2009 Autor Geschrieben 13. Februar 2009 Hey zusammen, ich wollte mich nochmal recht herzlich für Eure Hilfe bedanken! Ich hab den Quelltext jetzt so gut wie durch und bin auch froh darüber weil es schon bitter ist. Aber für Eure Hilfe bin ich euch sehr dankbar! THX. Grüße: Candid Zitieren
Mr Unix Geschrieben 14. Februar 2009 Geschrieben 14. Februar 2009 &d = Funktionsaufruf Und sogar ein sehr dummer Funktionsaufruf dazu auch noch. Das & vor dem Funktionsnamen setzt nich nur das Prototyping aus (was ziemliches Chaos veranstalten koennte), sondern gibt der Methode auch noch gleich @_ als Parameter mit (was noch mehr Chaos veranstalten koennte). ( !$host_used{$host} ) = Ueberprüfung, ob der zugehörige Wert des Keys "wahr" ist Die frage hier ist ob du uebrpruefen willst ob der Key existiert oder ob er einen Wert hat oder ob er einen gueltigen Wert hat. So wie es jetzt ist wuerde das nur false sein wenn der Key nicht da waere oder der Wert undef waere. Mit defined() wuerdest du ueberpruefen ob der Wert nicht undef ist. "" waere also akzeptabel. Mit exists() uebrpruefst du ob der Key existiert. Aber wie victorinox schon gesagt hat: Kopf hoch - perldoc ist dein Freund. Zitieren
candid Geschrieben 19. Februar 2009 Autor Geschrieben 19. Februar 2009 Hallo nochmal zusammen, vielen Dank für Eure Hilfe!!! Ich habe ein zum Teil fertiges Programm bekommen und musste dieses fertigstellen. Leider waren eben nur zwei Kommentare in 216 Zeilen Code vorhanden. Das hat mir anfangs das Leben sehr sehr schwer gemacht. Die meiste Zeit hat es gekostet den bisherigen Code zu verstehen. Aber mit Eurer Hilfe hat es funktioniert. Thx@all... Grüße: Candid Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.