1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
use strict; use warnings; undef $/; my $text = <DATA>; my @result = map { m/'(.*?)'/g } grep /source/, split /\n/, $text; use Data::Dumper; print Dumper \@result; __DATA__ 'pfad' source 'pfad2' was soll passieren, wenn es 2 'pfade' 'gibt'? source 'pfad3' 'pfadX' 'pfad4' source was ganz angeres und 'nochwas' anderes
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
use 5.012; use warnings; my $text = <<EOF; Hallo Welt! Rhabarber mit 'Quark' source '/sonst/wo' oder auch anderes Zeug '/wo/anders' source Blubberdidu 'daddeldumm' kawumm EOF my @sources = map { if (/source/ && /'([^']*)'/) { ($1) } else { () } } split /\n+/, $text; say for @sources;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
use 5.012; use warnings; my $text = <<EOF; source '/foo/bar' hollareiduljoeh peng '/zack/bumm' source oder so oans 'zwoa' dreie EOF my @lines; my $pos = 0; my $len = length $text; while ($pos < $len) { my $sep = index $text, "\n", $pos; if ($sep >= 0) { push @lines, substr $text, $pos, $sep - $pos; $pos = $sep + 1; } else { push @lines, substr $text, $pos; $pos = $len; } } my @sources = map { my $start = index $_, "'"; my $stop = index $_, "'", $start + 1; if (index($_, 'source') >= 0 and $start >= 0 and $stop >= 0) { (substr $_, ++$start, $stop - $start) } else { () } } @lines; say for @sources;
2013-08-15T12:09:06 eyekonaEs gibt viele Wege, Probleme mit Perl zu lösen.Wow, danke. Dein Thread leistet auf jeden Fall gute Überzeugungsarbeit was die Verwendung von Regex angeht - das ist um einiges kürzer....
Quotesay gibt es seit Perl 5.0.10 und ist ein print mit zusätzlicher Ausgabe des Newline.Sachen die ich so noch nicht gesehen habe. - Gleich probieren. :-) say for z.B.
Quoteuse 5.012; legt fest, dass mindestens Perl >= 5.0.12 verwendet werden muss.Was macht use 5.012; ? Legt das die Versionsnummer von Perl fest?
QuoteWelche Mindestversion von Perl willst du denn unterstützen?Das wäre aber kontraproduktiv, da nach einem Update kein Script mehr geht, oder?
2013-08-15T12:09:06 eyekona[...]
Auch bei dir gibt es Sachen die ich so noch nicht gesehen habe. - Gleich probieren. :-) say for z.B.
[...]
Quote[...]
was macht use 5.012; ? Legt das die Versionsnummer von Perl fest?
Das wäre aber kontraproduktiv, da nach einem Update kein Script mehr geht, oder?
[...]
Quote[...]
muss ich nur noch nachgucken, was map tut :-)
[...]
2013-08-15T12:23:06 eyekona[...]
"say" mag er aber irgendwie nicht...
"Bareword "say" not allowed while "strict subs" in use at... "
[...]
use v5.10;