Hi Leute,
ich habe hier ein kleines Problem, und zwar habe ich in meinem perl-script eine Dateiliste als array die folgendermassen aussieht:
-rw-r--r-- user/group 41733 2006-04-17 23:19:00 files/sa03.tex
-rw-r--r-- user/group 16406 2006-04-18 00:57:16 files/sa04.tex
-rw-r--r-- user/group 6313 2006-04-17 23:28:22 files/sa05.tex
-rw-r--r-- user2/group 3284 2006-04-13 21:11:10 files/sa06.tex
-rw-r--r-- user2/group 14014 2006-04-13 19:25:50 files/sa07.tex
-rw-r--r-- user2/group 4062 2003-11-18 15:44:34 files/twola ng.sty
ich will aus dieser Liste den Dateinamen, also den hinteren Teil des Strings rausparsen. Im Falle der letzten Zeile also "files/twola ng.sty". Das Problem dabei ist dass die Dateinamen eben auch Leerzeichen enthalten duerfen, ansonsten haette ich eine Zeile einfach mit splice zerlegen koennen.
Hat jmd von euch eine Idee wie ich das hinbekomme? Regulaere Ausdruecke hab ich auch schon einige versucht, ist aber immer daneben gegangen :-(
Ich habe auf jedenfall schon aus Performazgruenden keine Lust die Zeile Zeichen fuer Zeichen von links nach rechts nach Leerzeichen zu durchsuchen und dann nach dem 5. Leerzeichen mit dem auslesen zu beginnen (was ja an sich funktionieren wuerde)!
Waere SUPER wenn mir da jmd helfen koennte!!! :D
Also, vielen Dank schon mal im voraus,
Viele Gruesse,
Schranzi
User since
2003-08-04
14371
Artikel
ModeratorIn
split ist für so einen Fall besser:
#!/usr/bin/perl
use strict;
use warnings;
my @array = ('-rw-r--r-- user/group 41733 2006-04-17 23:19:00 files/sa03.tex',
'-rw-r--r-- user/group 16406 2006-04-18 00:57:16 files/sa04.tex',
'-rw-r--r-- user/group 6313 2006-04-17 23:28:22 files/sa05.tex',
'-rw-r--r-- user2/group 3284 2006-04-13 21:11:10 files/sa06.tex',
'-rw-r--r-- user2/group 14014 2006-04-13 19:25:50 files/sa07.tex',
'-rw-r--r-- user2/group 4062 2003-11-18 15:44:34 files/twola ng.sty');
for my $entry(@array){
my $filename = (split(/\s+/,$entry,6))[-1];
print $filename,"\n";
}
User since
2003-08-07
2921
Artikel
BenutzerIn
Und den Dateinamen kannst du noch bequem pber File::Basename auseinander nehmen.
User since
2003-08-04
12208
Artikel
Admin1
wenn du die möglichkeit hast, statt der liste selbst ein readdir zu machen, mach es.