Thread Use of implicit split to @_ is deprecated umgehen (14 answers)
Opened by bianca at 2011-03-12 15:59

FtR
 2011-03-12 20:28
#146443 #146443
User since
2003-08-20
39 Artikel
BenutzerIn
[default_avatar]
Wie kann ich am "saubersten" ermitteln, wieviele durch Komma getrennte Werte eine Variable enthält?

Da solltest du dir aber genau die Randbedingungen abschauen

Bei der aktuell vorgeschlagenen Methode @{[split /,/,$feld7]}werden unterschiedliche Werte für die folgenden Strings ausgegeben

"3,,,,,"
",,,,,3"
",,3,,,"

Obwhol dies immer nur 1 Wert ist

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#!/usr/bin/perl -w 
use strict;

 machma ("3,,,,");
 machma (",3,,,");
 machma (",,,,3");

sub machma{
    my $wert = shift;
    my $buff = $wert;
    print "\n\"$wert\"\n";
    print "Array Stunt\n";
    print scalar(@{[split /,/,$wert]});
    print "\nAnzahl der Felder\n";
    print scalar($wert=~s/,(?=.)//g)+1;
    $wert=$buff;
    print "\nAnzahl der Felder mit Wert\n";
    print scalar($wert=~s/,(?!\,)(?=.)//g)+1;
    print "\n";
}



AUSGABE

"3,,,,"
Array Stunt
1
Anzahl der Felder
4
Anzahl der Felder mit Wert
1

",3,,,"
Array Stunt
2
Anzahl der Felder
4
Anzahl der Felder mit Wert
1

",,,,3"
Array Stunt
5
Anzahl der Felder
5
Anzahl der Felder mit Wert
1



FtR
PS das mit dem scalar mach ich bewußt auch für deine Lösung um ganz klar den Context zu definieren.


Last edited: 2011-03-12 20:43:03 +0100 (CET)
Code: ()
1
2
print&f(($_=(3x3)."3+33")=~s=3(?![^3]|$)=&f=eg);
sub f{eval(@_?$_:"'$&+'x3");}

View full thread Use of implicit split to @_ is deprecated umgehen