Zum Inhalt springen

PERL Programmierung


Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

&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. :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 :D

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...