Thread Wie findet das Perlscript meinen Ordner!? (15 answers)
Opened by lin at 2010-09-27 20:31

topeg
 2010-09-29 15:48
#141560 #141560
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
2010-09-29T10:45:15 lin
Das mit dem Dateinnamen der zu parsenden DATEI so zu übergeben find ich auch sehr interessant: "Usage: '$0 <filename>'\n";

Nicht dass ein Missverständniss aufkommt. Diese Zeile:
Code (perl): (dl )
my $file = shift(@ARGV) or die "Usage: '$0 <filename>'\n"

macht folgendes:
Definiere eine Variable "$file", hole aus "@ARGV" das erste Argument. Wenn das Ergebnis dieser Aktion "Falsch" (in diesem Fall 'undef' oder '0') sein sollte so führe die "Usage: '$0 <filename>'\n" aus. "die" Lässt das Programm mit einer Fehlermelung ("Usage: '$0 <filename>'\n") sterben. Der "Zauber" ist hier das "or". Das logische 'oder' verhält sich in perl so, dass der zweite Teil nur ausgeführt wird wenn der erste teil ein 'falsch' zurück gibt ist der Teil aber 'wahr', so ist bei einem logischen 'oder' egal ob der zweite Teil 'wahr' oder 'falsch' ist, die Gesammtaussage ist immer wahr.
Ich hoffe das war jetzt nicht zu verwirrend.

2010-09-29T10:45:15 lin
Frage - ich muss dann noch die DATEI die geschrieben werden soll nennen - und der einen Pfad zuordnen. Wie mache ich das denn!? Und wie mit dem zu erzeugenden File. Ich denk ich brauchs einfach - am Anfang.

Keine Eindeutige Formulierung. Ich kann jetzt nicht genau sagen was du wissen willst.
Willst du wissen wie man eine Datei schreibend öffnet, oder wie man ein Datei allgemein öffnet, oder wie man eine Datei zum Dateinamen findet, oder wie man aus einer Pfadangabe eine absolute Pfadangabe macht, oder wie man eine Pfadangabe als solchen erkennt? Bitte spezefiziere dein Problem am besten mit einem Codebeispiel.

2010-09-29T10:45:15 lin
Ich könnte es ja auch so machen dass ich das Script selbst nach /usr/bin lege und nicht die Input-, sowie Outputfiles.

Du kannst die Dateien und programm hinlegen wo es dir beliebt, solange du die Pfade zu den Dateien kennst. (als Anmerkung: mit "Pfadname", oder "Pfad" wird der Dateiname zusammen mit er Ordnerstruktur gemeint. Also Dateiname: "test.txt", Pfadname: "/home/lin/perl_scripte/script1/test.txt")

2010-09-29T10:45:15 lin
Aber grundsätzlich würde das ja gehen. Ich meine als Anfänger - dass ich das übersichtlich halte. Auf die Portabilität brauch ich hier nicht so viel zu achten. Es - das Script muss erstmal bei mir seinen Dienst tun.
Dann kann ich ja weitersehen. Wenn es erstmal gelaufen ist - dann kann ich das immer noch portieren.

Für einen anfänger ist es von Vorteil ein Verzeichnis in seinem home-Verzeichnis anzulegen (z.B.: "/home/lin/scripte") und darin für jedes Script einen eigenen Ordner (z.B.: "/home/lin/scripte/test_http_parse"). darin kannst du alles legen was das Script braucht. und auch die Scriptversionen und andere Tests darin unterbringen. Ich zumindest halte es so dass ich wenn ein script einigermaßen Funktioniert, ein 'backup' davon mach indem ich mit einem etwas anders benannten Scriptnamen weiter mache. ('test.0.pl' => 'test.1.pl' => 'test.2.pl'). Alle Scripte '.pl' scripte in einem Ordner mache ich mit chmod u+x *.pl ausführbar. (man kann dann './test.0.pl' schreiben anstatt 'perl ./test.0.pl')

2010-09-29T10:45:15 lin
Wenn es "portable" sein soll, kann ich grundsätzlich einfache Options fuer das Script verwenden, die man beim Start angibt, z.B. "script.pl --inputfiles /pfad/zu/den/inputfiles --output /pfad/zum/outputdir".

Siehe dazu auch CPAN:Getopt::Long Das übernimmt für dich das parsen der komandozeilenoptionen (Die stehen in "@ARGV")

View full thread Wie findet das Perlscript meinen Ordner!?