Moin, bevor ich gefrustet in die Tischkante von meinem Computerarbeitsplatz beisse lieber schnell eine Frage and die Liste. Ich habe ein kleines Perlprogramm geschrieben in dem ich den Pfad und Dateinamen den ich dem Programm am Prompt übergebe in eine Variable schreibt. Der Aufruf sieht also wie folgt aus: ./script.pl /pfad/datei Nach erfolglosen Versuchen mit $_ bzw. $file = ENV{$_} bin ich langsam mit meinem Latein am Ende (ausserdem habe ich auch gerade kein Bock mehr ;->). Wie in Gottes Namen bekomme ich den Pfad und Dateinamen in eine Variable?? Das ist bestimmt so einfach das ich mich für die Frage schämen muss! ... may the Tux be with you! =Thomas= -- Thomas Bendler \\:// ml@bendler-net.de Billwiese 22 (o -) http://www.bendler-net.de/ 21033 Hamburg ---ooO-(_)-Ooo--- tel.: 0 177 - 277 37 61 Germany Linux, enjoy the ride ...! --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
From: "Thomas Bendler" <ml@bendler-net.de> Sent: Tuesday, August 01, 2000 7:31 PM
./script.pl /pfad/datei
Nach erfolglosen Versuchen mit $_ bzw. $file = ENV{$_} bin ich langsam mit meinem Latein am Ende (ausserdem habe ich auch gerade kein Bock mehr ;->). Wie in Gottes Namen bekomme ich den Pfad und Dateinamen in eine Variable?? Das ist bestimmt so einfach das ich mich für die Frage schämen muss!
Suchst du @ARGV? ($ARGV[0]) ? -- Marco Dieckhoff icq# 22243433 PGP Fingerprint: 9EFA D64F 5DAA D36B E0E7 CE1B 9E1B 4903 0C51 1632 --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
Moin, On Die, 01 Aug 2000, Marco Dieckhoff send incredible lines: [...]
Suchst du @ARGV? ($ARGV[0]) ?
$ARGV[0] war's, thany, hab den Wald vor lauter Bäumen nicht mehr gesehen :-)). ... may the Tux be with you! =Thomas= -- Thomas Bendler \\:// ml@bendler-net.de Billwiese 22 (o -) http://www.bendler-net.de/ 21033 Hamburg ---ooO-(_)-Ooo--- tel.: 0 177 - 277 37 61 Germany Linux, enjoy the ride ...! --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
* On Tue, Aug 01, 2000 at 07:54:11PM +0200, Marco Dieckhoff wrote:
From: "Thomas Bendler" <ml@bendler-net.de> Sent: Tuesday, August 01, 2000 7:31 PM
./script.pl /pfad/datei
Nach erfolglosen Versuchen mit $_ bzw. $file = ENV{$_} bin ich langsam mit meinem Latein am Ende (ausserdem habe ich auch gerade kein Bock mehr ;->). Wie in Gottes Namen bekomme ich den Pfad und Dateinamen in eine Variable?? Das ist bestimmt so einfach das ich mich für die Frage schämen muss!
Suchst du @ARGV? ($ARGV[0]) ?
....oder in shell $1 ;) myeingabe=$1 Gruß, Clemens -- sig_09 Reg-Linux-user #115060 || Mail: c.wohld@gmx.de Einfaches tar Backup: ...> cd <quelle> $ tar -cvpf - . | gzip --best > /<ziel> [Info: man tar; man gzip] --------------------------------------------- --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
On Die, 01 Aug 2000, Thomas Bendler wrote:
bevor ich gefrustet in die Tischkante von meinem Computerarbeitsplatz beisse lieber schnell eine Frage and die Liste. Ich habe ein kleines Perlprogramm geschrieben in dem ich den Pfad und Dateinamen den ich dem Programm am Prompt übergebe in eine Variable schreibt. Der Aufruf sieht also wie folgt aus:
./script.pl /pfad/datei
Nach erfolglosen Versuchen mit $_ bzw. $file = ENV{$_} bin ich langsam mit meinem Latein am Ende (ausserdem habe ich auch gerade kein Bock mehr ;->). Wie in Gottes Namen bekomme ich den Pfad und Dateinamen in eine Variable?? Das ist bestimmt so einfach das ich mich für die Frage schämen muss!
"perldoc perlvar": $_ The default input and pattern-searching space. Lösung: #!/usr/bin/perl # # Wenn das erste Kommadozeilen-argument "--help" ist, geben wir # eine hilfe aus # die "Benutzung auf eigene Gefahr\!" if $ARGV[0] eq "--help"; # # Wir pruefen ob exakt zwei parameter angegeben wurden # die "Benutze die option --help fuer Hilfe\n" unless scalar(@ARGV) == 2; # # Wir holen uns source und dest directory von der kommandozeile # und prüfen ob es wirklich existente verzeichnissse sind # die "Es müssen zwei Verzeichnisse angegeben werden\n" if (!-e $ARGV[0] or !-e $ARGV[1]); # $source = $ARGV[0]; $dest = $ARGV[1]; chomp($source, $dest); [...] Have a lot of fun... *fies_grins* Mit freundlichen Grüßen, Joerg Henner. -- LinuxHaus Stuttgart | Tel.: +49 (7 11) 2 85 19 05 J. Henner & A. Reyer, Datentechnik GbR | D2: +49 (1 72) 7 35 31 09 | Fax: +49 (7 11) 5 78 06 92 Linux, Netzwerke, Consulting & Support | http://lihas.de --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
* Thomas Bendler wrote:
Ich habe ein kleines Perlprogramm geschrieben in dem ich den Pfad und Dateinamen den ich dem Programm am Prompt übergebe in eine Variable schreibt. Der Aufruf sieht also wie folgt aus:
./script.pl /pfad/datei
Nach erfolglosen Versuchen mit $_ bzw. $file = ENV{$_} bin ich langsam mit meinem Latein am Ende (ausserdem habe ich auch gerade kein Bock mehr ;->). Wie in Gottes Namen bekomme ich den Pfad und Dateinamen in eine Variable?? Das ist bestimmt so einfach das ich mich für die Frage schämen muss!
Perl sammelt die Kommandozeilenelemente in dem Array @ARGV. Das erste Wort steht in $ARGV[0], das zweite Wort in $ARGV[1] usw. christian -- Bitte kein CC: bei Antwort an Mailingliste Etikette per Mail: To: mailings-suse@gmx.de Subject: send etikette http://www.ndh.net/home/schult/etikette.html --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
Am Die, 01 Aug 2000 schrieb Thomas Bendler:
./script.pl /pfad/datei
$path = shift; # besser als ARGV-Schreibweisen - Matthias --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
On Die, 01 Aug 2000, Matthias Kleine wrote:
./script.pl /pfad/datei $path = shift; # besser als ARGV-Schreibweisen
AUJA: learning perl in 2 hours ;) Mit freundlichen Grüßen, Joerg Henner. -- LinuxHaus Stuttgart | Tel.: +49 (7 11) 2 85 19 05 J. Henner & A. Reyer, Datentechnik GbR | D2: +49 (1 72) 7 35 31 09 | Fax: +49 (7 11) 5 78 06 92 Linux, Netzwerke, Consulting & Support | http://lihas.de --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
On Die, Aug 01, 2000 at 10:10:02 +0200, Matthias Kleine wrote:
Am Die, 01 Aug 2000 schrieb Thomas Bendler:
./script.pl /pfad/datei
$path = shift; # besser als ARGV-Schreibweisen
Hat das nicht den Nachteil, dass man nicht mehr auf die davor liegenden Argumente zugreifen kann? In der Shell ist es zumindest so (ein unshift habe ich zumindest nicht gefunden). Jan --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
On Tue, 1 Aug 2000, Jan Trippler wrote:
On Die, Aug 01, 2000 at 10:10:02 +0200, Matthias Kleine wrote:
Am Die, 01 Aug 2000 schrieb Thomas Bendler:
./script.pl /pfad/datei
$path = shift; # besser als ARGV-Schreibweisen
Hat das nicht den Nachteil, dass man nicht mehr auf die davor liegenden Argumente zugreifen kann? In der Shell ist es zumindest so (ein unshift habe ich zumindest nicht gefunden).
So? volker@flinux:~ > perldoc -f unshift =item unshift ARRAY,LIST Does the opposite of a C<shift()>. Or the opposite of a C<push()>, [...] Volker -- <ESC>:r .signature mailto:volker.mueller@gmx.de Hi I'm a UnixVirus. Please mail me to all people you know and delete some files on your disk at random.:wq --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
Am Die, 01 Aug 2000 schrieb Jan Trippler:
$path = shift; # besser als ARGV-Schreibweisen
Hat das nicht den Nachteil, dass man nicht mehr auf die davor liegenden Argumente zugreifen kann? In der Shell ist es zumindest so (ein unshift habe ich zumindest nicht gefunden).
Klar, Du schneidest von der Argumentenliste das erste Argument ab. Machst Du nochmal shift, erhälst Du das zweite Argument usw. Aber Du hast doch $path, wozu brauchst Du da nocht ARGV[0]? unshift gibt es in Perl, aber es bringt Dir freilich nicht das alte Element zurück. - Matthias --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
On Mit, Aug 02, 2000 at 08:22:16 +0200, Matthias Kleine wrote:
Am Die, 01 Aug 2000 schrieb Jan Trippler:
$path = shift; # besser als ARGV-Schreibweisen
Hat das nicht den Nachteil, dass man nicht mehr auf die davor liegenden Argumente zugreifen kann? In der Shell ist es zumindest so (ein unshift habe ich zumindest nicht gefunden).
Klar, Du schneidest von der Argumentenliste das erste Argument ab. Machst Du nochmal shift, erhälst Du das zweite Argument usw. Aber Du hast doch $path, wozu brauchst Du da nocht ARGV[0]? unshift gibt es in Perl, aber es bringt Dir freilich nicht das alte Element zurück.
Das unshift in Perl macht ungefähr das was ich meine (wenn man es auch auf das ARGV-Array anwenden kann). In der Shell geht das nicht. Ein Anwendungsfall, in dem es ganz nützlich sein kann, die Parameter der Kommandozeile noch komplett zu halten, ist folgender: Einem Programm wird eine variable Zahl von Argumenten (z. B. beliebig viele Pfadnamen) übergeben, die dann innerhalb des Scripts an ein weiteres Programm übergeben werden sollen ($*), obwohl das aufrufende Script sie auch schon verwendet. Da kommt ein shift nicht so gut. Jan --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
participants (8)
-
c.wohld@ndh.net
-
cschult@gmx.de
-
Jan.Trippler@t-online.de
-
jhe@lihas.de
-
linux@jwr.de
-
Matthias.Kleine@selflinux.de
-
ml@bendler-net.de
-
volker.mueller@gmx.de