perl -e '$blub="a b c"; @blub=split(/" "/,$blub); foreach(@blub) {$c++; print "$c $_\n"}'
perl -e '$blub="a b c"; @blub=split(//,$blub); foreach(@blub) {$c++; print "$c $_\n"}'
perl -e '$blub="a b c"; @blub=split(/ /,$blub); foreach(@blub) {$c++; print "$c $_\n"}'
1
2
3
4
perl -e '$blub="a b c"; @blub=split(" ",$blub); foreach(@blub) {$c++; print "$c $_\n"}'
1 a
2 b
3 c
QuoteThus, split(' ') can be used to emulate awk's default behavior, whereas split(/ /) will give you as many null initial fields as there are leading spaces.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# splitte an Pattern mit EINEM Leerzeichen
$ perl -e '$string = " foo bar"; @fields = split(/ /,$string); foreach(@fields) {$c++; print "$c $_\n"}'
1
2
3 foo
4
5 bar
# splitte an Pattern mit EINEM oder MEHREREN Leerzeichen
$ perl -e '$string = " foo bar"; @fields = split(/ +/,$string); foreach(@fields) {$c++; print "$c $_\n"}'
1
2 foo
3 bar
# SPEZIAL: splitte an STRING mit einem Leerzeichen
$ perl -e '$string = " foo bar"; @fields = split(" ",$string); foreach(@fields) {$c++; print "$c $_\n"}'
1 foo
2 bar
<leer><leer>foo<leer><leer>bar
2012-11-21T15:25:25 GwenDragon/" "/ ist kein Space!
Das ist ein Regex-Pattern, das aus Anführungszeichen+Space+Anführungszeichen besteht.
2012-11-21T15:32:48 Linuxer
Vielleicht wird's so verständlicher ?
2012-11-21T15:15:33 Student87Woher weiss man, dass man die Slashes weglassen muss?
perldoc -f splitA pattern matching the null string (not to be confused with a null pattern "//", which is just one member of the set of patterns matching a null string)
will split the value of EXPR into separate characters at each point it matches that way. For example:
print join(':', split(/ */, 'hi there'));
produces the output 'h:i:t:h:e:r:e'.
2012-11-21T14:26:21 Student87empty string: split(/""/, $somestring)
2012-11-21T14:26:21 Student87null string: split(/$var/, $somestring) wobei $var undefiniert ist (my $var;)
1
2
perl -e '$blub="a b c"; @blub=split(/" "/,$blub); foreach(@blub) {$c++; print "$c $_\n"}'
1 a b c
perl -e '$blub="a b c"; @blub=split(/" "/,$blub); foreach(@blub) {$c++; print "$c $_\n"}'
2012-11-21T14:29:52 Student87Code (perl): (dl )perl -e '$blub="a b c"; @blub=split(/" "/,$blub); foreach(@blub) {$c++; print "$c $_\n"}'
produziert bei mir
1 a b c
Ist aber auch wie gesagt Perl 8.8 ... ?
QuoteCan't find string terminator "'" anywhere before EOF at -e line 1.
2012-11-21T14:31:46 bianca2012-11-21T14:29:52 Student87Code (perl): (dl )perl -e '$blub="a b c"; @blub=split(/" "/,$blub); foreach(@blub) {$c++; print "$c $_\n"}'
produziert bei mir
1 a b c
Ist aber auch wie gesagt Perl 8.8 ... ?
Wohl eher 5.8.8, oder?
Bei mir mit Strawberry 5.10.1 das hier:
QuoteCan't find string terminator "'" anywhere before EOF at -e line 1.
2012-11-21T14:20:30 LinuxerFall 3:
Dein Perl ist kaputt oder Du zeigst den falschen Code:
Code: (dl )1
2perl -e '$blub="a b c"; @blub=split(/" "/,$blub); foreach(@blub) {$c++; print "$c $_\n"}'
1 a b c
perl -e '$blub="a b c"; @blub=split(//,$blub); foreach(@blub) {$c++; print "$c $_\n"}'
perl -e '$blub="a b c"; @blub=split(/ /,$blub); foreach(@blub) {$c++; print "$c $_\n"}'
perl -MData::Dumper -we '$str="a b c"; @arr=split(/ /,$str); print Dumper \@arr'
perl -MData::Dumper -we 'print Dumper [split(/ /,"a b c")];'