• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[solved][perl] zweidimensionales Array

catweasel

Hacker
Mein zweidimensionales Array gebe ich so aus:

Code:
foreach my $row (@text)
	{
	print @$row;
	}

Wenn eine bestimmte Bedingung erfüllt ist, möchte ich eine gewisse Anzahl von Zeile abschneiden.

Ein einfaches Array kann ich z.B. mit

Code:
$#a=2;

kürzen.

Gibt es etwas ähnlich kurzes für mein Problem?
 
OP
C

catweasel

Hacker
das funktioniert nicht.

Ein Element meines Arrays sieht z.B. so aus:

Code:
$text[1][4]="Baum";
 

ginka

Member
Dann sag doch bitte mal genau, was du machen möchtest. Nach deinem ersten Posting:

catweasel schrieb:
Mein zweidimensionales Array gebe ich so aus:

Code:
foreach my $row (@text)
	{
	print @$row;
	}

Wenn eine bestimmte Bedingung erfüllt ist, möchte ich eine gewisse Anzahl von Zeile abschneiden.

... hätte ich angenommen, dass du so etwas in der Art vor hast:

Code:
foreach my $row (@text)
{
	if ( <Bedingungsprüfung> )
	{
                $#{$row} = <neuer letzter Index>;
	}
}

Wenn es das nicht ist, was dann?

Viele Grüße
ginka
 

ginka

Member
jengelh schrieb:
Aber reichen tut $#$row ohne {}.

Ja, aber nur wenn das Array @text wie oben angegeben mit einer foreach-Schleife durchlaufen wird. Macht man das Ganze mit einer zählergesteuerten for-Schleife, z.B.

Code:
for ( $i = 0; $i <= $#text; $i++ )
{
	print $#{$text[$i]} . "\n";
}

dann braucht man die {} - sonst bekommt man ein

Code:
syntax error at ./test.pl line 10, near "$text["
Execution of ./test.pl aborted due to compilation errors.

Viele Grüße
ginka
 
OP
C

catweasel

Hacker
Hatte ein "n" vergessen.
Es sollte heißen:
"Wenn eine bestimmte Bedingung erfüllt ist, möchte ich eine gewisse Anzahl von Zeilen abschneiden. "

Ich war mit "$#text=" schon auf dem richtigen Weg - der Fehler lag an einer anderen Stelle des Skripts.
Dieser Thread hat mich wieder zurrück auf den rechten Pfad gebracht.
 
Oben