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

Kann ich das?



<< |< 1 2 >| >> 14 Einträge, 2 Seiten
RPerl
 2008-01-03 19:38
#104360 #104360
User since
2006-11-26
384 Artikel
BenutzerIn

user image
Hallo,

kurze Frage: Kann ich das:

Code (perl): (dl )
return @users, @passes;


2 Arrays zurueckgeben?

Aufruf:

Code (perl): (dl )
my (@users, @passes) = &_list($userfile, $passfile);


In @users ist BEIDES. Also der Inhalt von @users *UND* @passes. Das sehe ich nach einem print.

Wie kann ich das denn verhindern?!

Gruss

rperl
renee
 2008-01-03 19:51
#104361 #104361
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Nur mit Referenzen...

Code (perl): (dl )
return \@users, \@passes;


und dann:

Code (perl): (dl )
1
2
3
4
5
my ($users, $passes) = &_list($userfile, $passfile);
my @array1 = @$users;
print $_,"\n" for @array1;
print "Passes: $_\n" for @$passes;
print $passes->[1];


siehe auch perlreftut
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/
RPerl
 2008-01-03 20:00
#104362 #104362
User since
2006-11-26
384 Artikel
BenutzerIn

user image
verrueckt. so ging es:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
sub main{
  my @arr0 = qw(1 2 3 4 5);
  my @arr1 = qw(6 7 8 9 10);

  return \@arr0, \@arr1;
}

my ($aref1, $aref2) = &main();

print $aref1->[4], "\n";
print $aref2->[4];


Ist das so ok? Oder besser so:

Code (perl): (dl )
my @array1 = @$users;


Oder ist deine Loesung und meine gleich?

Herzlichen Dank!

RPerl
renee
 2008-01-03 20:08
#104363 #104363
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
RPerl+2008-01-03 19:00:17--
Ist das so ok? Oder besser so:

Code (perl): (dl )
my @array1 = @$users;

Nein, so wie Du das machst ist es absolut richtig.

Quote
Oder ist deine Loesung und meine gleich?
im Prinzip schon. Ich wollte Dir mit den drei "print"-Anweisungen zeigen, wie Du an die Elemente kommst. Meine dritte Anweisung entspricht dem was Du gemacht hast...
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/
sid burn
 2008-01-06 21:52
#104446 #104446
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
Code: (dl )
&main();

Du solltest dir nur abgewöhnen Subroutinen mit einem & vorran aufzurufen. Sowas macht man nicht mehr. Man sollte das & nur noch nutzen wenn man Referenzen auf Subroutinen erstellen muss.
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de
Gast Gast
 2008-01-07 13:25
#104453 #104453
Vielen Dank fuer den Tip, sid burn! Das wusste ich noch garnicht.Dachte das hat was mit den Parametern zutun bzw. dem weglassen von diesen.

Werde das gleich umsetzen.
renee
 2008-01-07 13:29
#104454 #104454
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Das ist eine Philosophiefrage. Wie sid burn es gesagt hat, ist heute eher die Regel, das & wegzulassen. Strat verwendet z.B. das & um Subroutinen aus anderen Modulen herauszustellen (oder war es anders herum?)...

Es ist jedenfalls nicht falsch wenn man es benutzt...
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/
Ronnie
 2008-01-07 13:44
#104456 #104456
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
renee+2008-01-07 12:29:15--
Es ist jedenfalls nicht falsch wenn man es benutzt...

Kann es aber sein, wenn man Prototypen verwendet. Empfehlung wäre es also zu lassen, außer man hat gute Gründe und kennt die Stellen an denen man sich womöglich in den fuss schiesst.

Gruß,
Ronnie
pq
 2008-01-07 13:45
#104457 #104457
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
renee+2008-01-07 12:29:15--
Es ist jedenfalls nicht falsch wenn man es benutzt...

naja, kann man auch anders sehen.
&foo() umgeht den prototyp. falls foo() also mit prototyp deklariert ist, ist der aufruf falsch.
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
renee
 2008-01-07 13:55
#104459 #104459
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
jepp, ihr habt recht... war mir nicht mehr so bewusst, da ich in 99,9% der Fälle *keine* Prototypen verwende. Danke also für den Hinweis.
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/
<< |< 1 2 >| >> 14 Einträge, 2 Seiten



View all threads created 2008-01-03 19:38.