Array Elemente vertauschen

Hallo!
Gibt es eine Möglichkeit, Elemente eines Arrays zu vertauschen?

my @test = (eins, zwei, drei, vier, fuenf);

@test = tausch(„eins“)

in der Funktion Tausch soll ein String übergeben werden. Nach diesem wird im Array gesucht. Wenn er gefunden wurde (und er wird in jedem Fall gefunden) wird er mit einem anderen Element (das immer das gleiche ist z.B.: „vier“) der Liste vertauscht.
Das Array sollte nun so aussehen:

@test = (vier, zwei, drei, eins, fuenf);

Ich hab schon ewig gesucht, aber nichts passendes gefunden.
Ich hoffe, ihr könnt mir mal wieder helfen.

Danke und

MfG Christoph

Gibt es eine Möglichkeit, Elemente eines Arrays zu
vertauschen?

natuerlich… waere ja auch schlimm, wenn nicht.

in der Funktion Tausch soll ein String übergeben werden. Nach
diesem wird im Array gesucht. Wenn er gefunden wurde (und er
wird in jedem Fall gefunden) wird er mit einem anderen Element
(das immer das gleiche ist z.B.: „vier“) der Liste vertauscht.

nun ja, es gibt keine fertige funktion, die das macht.
die frage ist, womit du probleme hast. kannst du schon
ein bisschen programmieren oder gar nicht?
willst du eine fertige funktion haben oder auch mitarbeiten?
weisst du, wie du eine subroutine allgemein schreibst und
argumente uebergibst? du siehst, wenn du erzaehlt haettest,
was du schon weisst und was nicht, koennte man dir eher
helfen.

zum loesungsweg:
du schreibst eine subroutine, der du 2 argumente uebergibst,
eine arrayreferenz (das array, das du veraendern willst) und den
gesuchten string.
zu datenstrukturen, referenzen siehe perldoc perlref, perldoc perllol.
du suchst nach dem uebergebenen element (mit einer schleife
ueber die indizes des arrays) und merkst dir den index. dann
suchst du nach dem anderen element, nach der „vier“, und merkst
dir auch hier den index. kannst das ganze auch in einer schleife
erledigen.
dann tauschst du die beiden elemente einfach aus:

($arrayref-\>[$x], $arrayref-\>[$y]) = ($arrayref-\>[$y], $arrayref-\>[$x]);
# oder mit arrayslices etwas kompakter
@$arrayref[$x,$y] = @$arrayref[$x,$y];

Auch hallo.

Gibt es eine Möglichkeit, Elemente eines Arrays zu
vertauschen?

Slices

my @test = (eins, zwei, drei, vier, fuenf);

#!/usr/bin/perl -w
use strict;
use warnings;
my @test = ('eins', 'zwei', 'drei', 'vier', 'fuenf');
@test[0,1,2,3,4] = @test[3,1,2,0,4];
print "@test";

HTH
mfg M.L.

@test[0,1,2,3,4] = @test[3,1,2,0,4];

wobei du da ein paar indizes weglassen kannst:

@test[0,3] = @test[3,0];

@test[0,3] = @test[3,0];

Stimmt :smile:

Ich Danke euch recht herzlich.
So wie Tina es vorgeschlagen hatte, hab ichÄ’s mir auch schon überlegt - ich hab es nur nicht hin bekommen, die elemente zu vertauschen :smile:

die Subroutine sieht jetzt so aus:

sub change {
my $id = $_[0];
my $string = $_[1];

my @check = split(",", $string);

for(my $i = 0; $i ";
}
return $array;
}

Viel Spaß noch! :wink: