Speicher problem mit perl
k!llp3rl
- perl
$var_test_sm = "1|212|asdfads|asdfasdf||||||sydfas|asdf||||||||||";
@liste_test_sm= split(/|/, $var_test_sm);
print scalar(@liste_test_sm);
exit;
hi,
ich habe einen string mit 20 | (pips) wenn ich nun den split mache
auf | bekomme ich nur ein liste mit 11 inhalten zurück der rest geht verloren. dies war früher nicht so bei perl. kann man das irgendwie in der perl version 5.8.4 steuern?
$var_test_sm = "1|212|asdfads|asdfasdf||||||sydfas|asdf||||||||||";
@liste_test_sm= split(/|/, $var_test_sm);
print scalar(@liste_test_sm);
exit;
Du arbeitest nicht mit strict?
Solltest du aber, damit lassen sich viele Fehler vermeiden bzw. leichter finden.
ich habe einen string mit 20 | (pips) wenn ich nun den split mache
auf | bekomme ich nur ein liste mit 11 inhalten zurück der rest geht verloren. dies war früher nicht so bei perl. kann man das irgendwie in der perl version 5.8.4 steuern?
Ich hab hier Perl 5.6.0 und bekomme mit deinem obigen Code ebenfalls 11
offensichtlich wird eine leere Liste nicht gesplitet, das einzige was mir einfällt, ist das du noch ein Element mit einem Inhalt anhängst.
my $var_test_sm = "1|212|asdfads|asdfasdf||||||sydfas|asdf||||||||||";
$var_test_sm .= '1';
@liste_test_sm = split(/\|/, $var_test_sm);
pop @liste_test_sm;
print scalar(@liste_test_sm);
Struppi.
Hell-O!
offensichtlich wird eine leere Liste nicht gesplitet
Ja, wie in der Doku zu split nachzulesen ist:
"By default, empty leading fields are preserved, and empty trailing ones are deleted."
Ein möglicher Ansatz wäre ein Dummy-Zeichen anzufügen:
use strict;
use warnings;
use CGI::Carp qw(fatalsToBrowser);
use Data::Dumper;
my $string = '||1|2||3||4|||';
$string .= "\n";
my @liste = split /\|/, $string;
pop @liste;
print Dumper @liste;
Natürlich muss man dann noch via pop das Dummy-Zeichen aus der Ergebnisliste entfernen.
Siechfred
Hell-O!
offensichtlich wird eine leere Liste nicht gesplitet
Ja, wie in der Doku zu split nachzulesen ist:
"By default, empty leading fields are preserved, and empty trailing ones are deleted."
Ein möglicher Ansatz wäre ein Dummy-Zeichen anzufügen:
use strict;
use warnings;
use CGI::Carp qw(fatalsToBrowser);
use Data::Dumper;my $string = '||1|2||3||4|||';
$string .= "\n";
my @liste = split /|/, $string;
pop @liste;
print Dumper @liste;
>
> Natürlich muss man dann noch via pop das Dummy-Zeichen aus der Ergebnisliste entfernen.
>
> Siechfred
ja genau so hatte ich es jetzt auch gelöst. aber früher war das nicht so... verdammt.
nagut vielen dank