Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]11796[/thread]

Problem mit Sub Parametern



<< >> 4 Einträge, 1 Seite
JackBauer
 2008-05-13 13:13
#109644 #109644
User since
2008-04-30
16 Artikel
BenutzerIn
[default_avatar]
Hi zusammen!

Ich habe mir eine Methode geschrieben mit der ich mittels der XML::Writer Lib eine XML erstellen kann. Die benötigten Parameter übergebe ich der Methode beim Aufruf:

Code (perl): (dl )
1
2
3
4
my $name = "tcName";
my $phoneNumber = "12345";
my $callNumber = "0111";
$testcase->createCallTestcaseXML($name, $phoneID, $callNumber);


In der Sub selber greife ich ich mir die Werte dann wieder aus @_ und verwende sie.

Code (perl): (dl )
1
2
3
4
5
6
sub createCallTestcaseXML
{
        my $name3 = $_[0];
        my $phoneID = $_[1];
        my $callNumber = $_[2];
...


Mit $phoneID und $callNumber klappt das wunderbar. $name hingegen enthält nicht einen String, sondern einen Hashwert. Woran kann das liegen?

Wie greift man eigentlich normalerweise am besten auf die Parameter zurück? Durch Übergabe einer Referenz auf ein Hash-Array oder?

Grüße!

JackBauer
Linuxer
 2008-05-13 13:19
#109645 #109645
User since
2006-01-27
3890 Artikel
HausmeisterIn

user image
Hi,

der erste Parameter ist bei einer Objektorientierten Methode in Perl das Objekt selbst.

Code (perl): (dl )
1
2
3
4
5
6
sub foo {
  my $self = shift; # objekt uebernehmen
  my $param1 = shift;  # erster uebergebener parameter
  my $param2 = shift;  # zweiter uebergebener parameter
  # ...
}
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!
JackBauer
 2008-05-13 13:22
#109646 #109646
User since
2008-04-30
16 Artikel
BenutzerIn
[default_avatar]
Stimmt, natürlich - war wohl ein blöder Flüchtigkeitsfehler! Ist mir gerade auch aufgefallen, als ich mal diese Ausgabe in die sub reingepackt hatte:

Code (perl): (dl )
1
2
3
4
foreach $param ( @_ )
{
        print "param = $param\n";
}
renee
 2008-05-13 13:22
#109647 #109647
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Das $testcase->... bewirkt, dass $testcase als erster Parameter übergeben wird.

Deine Sub muss also so aussehen:

Code (perl): (dl )
1
2
3
4
sub createCallTestcaseXML{
  my ($tc,$name3,$phoneID,$callNumber) = @_;
  ...
}
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
<< >> 4 Einträge, 1 Seite



View all threads created 2008-05-13 13:13.