Thread threads => Grundwissen (50 answers)
Opened by RPerl at 2007-01-21 18:07

topeg
 2007-01-28 21:09
#73477 #73477
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
Allso ein wenig informationen wie man Werte an eine Funktion übergibt.

Nemen wir mal ein Funktion und nennen sie "test". An test übergeben wir Werte.
Code (perl): (dl )
&test($wert1,$wert2,$wert3,@array1);

Die zu übergebenen Werte werden in "@_" deponiert und sind in der Funktion selber darüber erreichbar. bedenke aber, das bei "@array" nicht das array als Referenz sondern als Liste des Inhaltes übergeben wird. Selbisges Gilt auch für Hashes (siehe dazu die Hash/Array-Überführbarkeit).
Wenn du allso eine Funktion "test" schreibst, so kannst du die übergeben Werte wie folgt abrufen:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
sub test
{
 my ($w1,$w2,$w3,@a1)=@_;
 # oder:
 my $w1=shift(@_);
 my $w2=shift(@_);
 my $w3=shift(@_);
 my @a1=@_;
 # oder:
 my $w1=$_[0];
 my $w2=$_[1];
 my $w3=$_[2];
 my @a1=@_[3..$#_];
}


Mal als vollständiges Script:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/usr/bin/perl
use strict;
use warnings;

sub test
{
  my ($wert1,$wert2,$array_ref,@array)=@_;
  print "Ich bin $wert1\n";
  print "Das ist $wert2\n";
  print 'Ich bin '.join(', ',@$array_ref)."\n";
  print 'Ich bin nicht '.join(', ',@array)."\n";
}

my @array_a=('schlau', 'geschickt', 'gutmuetig');
my @array_b=('gross', 'schnell', 'beinhart');

&test('Programmierer', 'eine Funktion', \@array_a, @array_b);



Sowas sollte aber in jeder Einführung zu Perl zu finden sein.

View full thread threads => Grundwissen