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

Referenzen in Methoden benutzen: $_[0] => $variablenname



<< >> 7 Einträge, 1 Seite
pktm
 2006-06-27 21:54
#67658 #67658
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Hallo!

Ich habe ein Array, welches ich gerne nur als Referenz an meine Methode übergeben möchte.

In meiner Methode möchte ich das Array nicht nochmal als Kopie anlegen sondern nur als Referenz ansprechen.

$_[0] ist mit zu diesem Zwecke zwar recht dienlich, aber ich hätte gerne einen netten Variablennamen wie $nichtssagendervariablennamevonschlechtenprogrammieren oder etwas ähnliches. Wie kann ich das machen?

Grüße, pktm
http://www.intergastro-service.de (mein erstes CMS :) )
Ronnie
 2006-06-27 22:07
#67659 #67659
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
Code: (dl )
1
2
3
4
5
sub methode {
my $self = shift;
my $arr_ref = shift || [];
# yada yada yada
}
pktm
 2006-06-27 22:32
#67660 #67660
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Hm, verstehe ich nicht.
Habe mal in einem Buch nachgesehen und da stand in etwa das hier:
Code: (dl )
1
2
3
4
5
sub yada {
   my $self = shfit;
   my ($param) = @_;
  # yada yada yada
}
\n\n

<!--EDIT|pktm|1151433198-->
http://www.intergastro-service.de (mein erstes CMS :) )
Ronnie
 2006-06-27 22:40
#67661 #67661
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
[quote=pktm,27.06.2006, 20:32]Hm, verstehe ich nicht.
Habe mal in einem Buch nachgesehen und da stand in etwa das hier:
Code: (dl )
1
2
3
4
5
sub yada {
my $self = shfit;
my ($param) = @_;
# yada yada yada
}
[/quote]
Das macht beinahe das selbe wie mein obiges Beispiel, ohne den Parameter aus @_ zu entfernen.

Ein etwas ausführlicheres Beispiel:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/usr/bin/perl

use strict;
use warnings;

use Data::Dumper;

sub foo {
my $bar = shift || [];
push @$bar, 'yellow';
return Dumper $bar;
}

my @baz = qw /red green blue/;
print foo \@baz;
\n\n

<!--EDIT|Ronnie|1151433724-->
renee
 2006-06-27 22:41
#67662 #67662
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Ronnie fragt ab, ob denn tatsächlich eine Arrayreferenz (besser: ein "wahrer" Wert) übergeben wurde und falls nicht, dann erstellt er ein anonymes Array...

Sonst ist es im Prinzip das gleiche...
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/
pktm
 2006-06-28 11:56
#67663 #67663
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Uns mit shift wuird keine Kopie der übergebenen Daten in der Methode angelegt? Ich habe irgendwo mal sowas aufgeschnappt. Da das Array ziemlich groß ist würde mir das bauchschmerzen bereiten wenn es einfach mal eben kopiert würde.
http://www.intergastro-service.de (mein erstes CMS :) )
pq
 2006-06-28 12:25
#67664 #67664
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
my $arrayref = shift; kopiert die arrayref. aber eine arrayref ist eben nur eine
referenz. die ist klein genug, so dass man sie sorgenlos kopieren kann.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
<< >> 7 Einträge, 1 Seite



View all threads created 2006-06-27 21:54.