Thread split gibt scalar zurück. Warum? (8 answers)
Opened by lawnmover at 2011-02-18 12:19

lawnmover
 2011-02-18 14:22
#145751 #145751
User since
2011-02-18
6 Artikel
BenutzerIn
[default_avatar]
2011-02-18T12:42:45 pq
aber das beantwortet nicht die frage, warum du zeilen, die eh schon nach newlines aufgesplittet sind, nochmal nach newlines splitten willst.

Ich hatte nen ganz blöden Denkfehler. Ich wollte ansich nur ne Funktion schreiben die schaut ob oder wieviele Zeilen in einem Textstück ( array) sind. Da ich aber in dem Fall keine Textstücke sondern einzelne Zeilen hatte... war mein Ansatz einfach falsch.

2011-02-18T12:42:45 pq
vielleicht beschreibst du einfach ganz genau, was du in welchem fall machen willst, denn dein code ist so relativ unsinnig und lässt für mich schwer eine interpretation zu, was er machen soll, wenn er fertig ist.


Schreib grad nen Programm das die Ausgabe von dmidecode parst. Im Grund mit /Handle/ eingelesen dann nach : gesplittet und man hatte Schlüssel und Wert. Allerdings gab es einen Schlüssel mit mehreren Werten über Zeilen verteilt. Also andere Funktion. Und das ist dabei herausgekommen
Code: (dl )
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
sub data{
my @parts;
my %data;
my $i;
my $x;
my $new;
my $value;
my $key;
my @values;
$\ = "\n";

# parts is key, value + key
@parts = split( /:/, $_[0]);

$new = trim($parts[0]);
for( $i = 1; $i <= $#parts; $i++ ){
# set right key
$key = $new;

@values = split( "\n", $parts[$i]);
# last line is next key
$new = trim( pop @values);

foreach( @values ){
trim( $_ );
print $_;
}
# rest are values
$data{$key} = join( "\n", @values);
}
while ( ($key, $value) = each (%data) ){
#print $key . '=>' . $value;
}
#print %data;
}


@Taumarill seh ich das richtig das:
Code (perl): (dl )
my $lb   = () = $text =~ /(\n)/g;


den $text nach \n durchsucht und dann ein \n in (), also eine Liste geschrieben wird und da $lb = () einen Skalarenkontext hat, hat es danach die Anzahl an Zeilen?

View full thread split gibt scalar zurück. Warum?