Schrift
[thread]12699[/thread]

perlopentut



<< >> 6 Einträge, 1 Seite
Gast Gast
 2008-10-31 10:22
#115868 #115868
Code (perl): (dl )
@ARGV = map { /^\.(gz|Z)$/ ? "gzip -dc $_ |" : $_  } @ARGV;


Nach meinem Verständnis sollte der reguläre Ausdruck entweder so
Code (perl): (dl )
/\.(gz|Z)$/
oder so
Code (perl): (dl )
/^.+\.(gz|Z)$/
aussehen.
Ist im zitierten Beispiel ein Fehler passiert?
renee
 2008-10-31 10:30
#115869 #115869
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Ja, das sieht sehr nach einem Fehler aus. Danke für den Hinweis! Deine erste Alternative ist besser als die zweite...

Edit: Das ist in der aktuellen Version schon gefixt: http://public.activestate.com/cgi-bin/perlbrowse/f...
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/
Dubu
 2008-10-31 10:48
#115872 #115872
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
In der Übersetzung auch gefixt. Vielen Dank für den Hinweis.
Gast Gast
 2008-10-31 16:24
#115885 #115885
Code: (dl )
"Another reason for preprocessing arguments is to make an empty argument list default to all files:"


Code (perl): (dl )
@ARGV = glob("*") unless @ARGV;


Kann mir jemand als Belohnung sagen, was hier gemeint ist?
Gast Gast
 2008-10-31 16:44
#115886 #115886
Code (perl): (dl )
@ARGV
Eine vorbelegte Variable von Perl, wenn an ein Perlscript Parmetter übergeben werden landen sie da drin.
z.B:
Code: (dl )
meinscript.pl das ist ein test
das ist gleichbedeutend zu
Code (perl): (dl )
@ARGV=qw(das ist ein test);


Code (perl): (dl )
glob("*")
Globbing ist das was die Schell macht wenn man Namen vervollständigt
So würde z.B
Code: (dl )
meinscript.pl *
Alle Datei/Ordnernamen des aktuellen Verzeichnisses an das Script übergeben. Damit ist das gleichbedeutend mit
Code (perl): (dl )
@ARGV=glob("*")


Code (perl): (dl )
unless( ... )
ist gleichbedeutend zu
Code (perl): (dl )
if(! ... ) 


ein Array gibt im Scalarekontext seine Länge zurück.

zusammengefügt heißt das so viel wie:
lese alle Einträge des aktuellen Verzeichnisses und schreibe setze in das Array @ARGV, wenn das Array @ARGV nicht wenigstens einen Eintrag hat,
Gast Gast
 2008-10-31 18:22
#115888 #115888
Danke!
<< >> 6 Einträge, 1 Seite



View all threads created 2008-10-31 10:22.