push - aber nicht dahinter, sondern mittenrein ;)

mc_gulasch

Erfahrenes Mitglied
Hallöle,

mein Frage wäre, ob es eine Funktion gibt, die in einen (mehrdimensionalen) Array eine Zeile mittenrein quetschen kann, sprich ungefähr so:
Code:
a[0]=0;
a[1]=1;
a[2]=3;

@b=quetsch(@a,2,2) #quetscht in a, an der Stelle 2 den Wert 2 rein

b[0]=0;
b[1]=1;
b[2]=2;
b[3]=3;
Gibt´s sowas?

Danke sagt das Gulasch!

//Edit:

Ok, hab was gefunden und die Funktion nennt sich "splice". Allerdings geht die nur vernünftig für eindimensionale Arrays, ich hab allerdings eine Matrix...was mach ich denn da?
Kann mir wer helfen, wie ich den Aufruf auch für Matritzen hinkriege?
Perl:
$test[0]="ein String";
$test[1]="noch ein string";
splice(@matrix_sortiert,2,0,@test); #@matrix ist nx2

$i=0;
foreach(@matrix_sortiert)
{
  print $matrix_sortiert[$i][0] ."\n";$i++;
}
Splice fügt hier beide Werte von test nacheinander in die Matrix ein, allerdings sollten diese eben an matrix[2][0] bzw. matrix[2][1].

Kann mir wer helfen? Danke!
 
Zuletzt bearbeitet:
Hm....leider nicht. Zwar macht er 2x Platz für jeweils test[0] und test[1], aber einfügen tut er es nicht. Wenn ich mir die erste Spalte der Matrix dann ausgeben lasse, erhalte ich:
Code:
bla
blub


usw
etc
www
...

(gut, nicht sortiert, aber du weißt, was ich meine)

//Edit:

Mit der folgenden Veränderung und ohne "[ ]" um "@test" gehts:

Perl:
$test[0][0]="ein String"; #<----------------

$test[0][1]="noch ein string";#<------------

splice(@matrix_sortiert,2,0,@test); #@matrix ist nx2

 

$i=0;

foreach(@matrix_sortiert)

{

  print $matrix_sortiert[$i][0] ."\n";$i++;

}

Danke trotzdem für die Hilfe!
 
Zuletzt bearbeitet:
Hallo,

folgendes funktioniert bei mir einwandfrei:
Perl:
@line1 = ('foo', 'bar');
@line2 = ('13', '37');
@line3 = ('twenty', 'four');

@matrix = ([@line1], [@line2], [@line3]);

@test = ('ein String', 'noch ein String');

splice(@matrix, 2, 0, [@test]);

foreach $line (@matrix) {
  foreach $field (@{$line}) {
    print $field;
    print ' | ';
  }
  print "\n";
}

Ausgabe:
Code:
foo | bar |
13 | 37 |
ein String | noch ein string |
twenty | four |

Grüße,
Matthias
 

Neue Beiträge

Zurück