[perl] array doorgeven van subroutine naar subroutine

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • ingdas
  • Registratie: Mei 2007
  • Laatst online: 05-08-2013
Ik ben bezig met een programma in Perl. Het komt erop neer dat ik bepaalde anagrammen wil printen van een woord.

Perl:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
    #4 argumenten: woord+ infixarray+prefixarray+postfixarray
sub printvormen
    {
        my $startwoord=$_[0];
        my @in=@{$_[1]};
        my @pre=@{$_[2]};
        my @post=@{$_[3]};
        print printalsarray($startwoord,@in);
        print "\n";
        print printalsarray($startwoord,@pre);
        print "\n";
        print printalsarray($startwoord,@post);
        print "\n";
    }

    #2 argumenten: woord + volgordearray
sub printalsarray
{
    my $woordje=$_[0];
    my @lijstje=@{$_[1]};
    print $lijstje[2];
    my $ret="";
    foreach $number (@lijstje){
    $ret+=substr($woordje,$number-1,1);
    }

    return $ret;
}

als ik een array doorgeef aan subroutine "printvormen" dan kan ik de array @in perfect inspecteren met printopdrachten.
Maar tijdens de sub-subroutine printalsarray kan lijstje niet geïnitialiseerd worden? Ik krijg errors bij regel 21 (die ik ertussen heb gezet om te kunnen testen waar mijn programma fout liep)

Ik snap totaal niet waarom aangezien ik dezelfde manier gebruik in printvormen en printalsarray om arrays door te geven. Heeft iemand een idee?

Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 21:01
Moet je de array niet expliciet by reference doorgeven? Anders worden die arrays als onderdeel van de argumentlijst beschouwd.

Dus zo:
Perl:
8
9
10
11
12
13
        print printalsarray($startwoord,\@in);
        print "\n";
        print printalsarray($startwoord,\@pre);
        print "\n";
        print printalsarray($startwoord,\@post);
        print "\n";

[ Voor 5% gewijzigd door Soultaker op 22-04-2009 17:12 ]


Acties:
  • 0 Henk 'm!

  • ingdas
  • Registratie: Mei 2007
  • Laatst online: 05-08-2013
Ok, bedankt het werkt nu :)
Ik wist niet dat dit moest

Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 21:01
Hoe call je printvormen dan? :P Dat werkt toch op precies dezelfde manier?

Acties:
  • 0 Henk 'm!

  • ingdas
  • Registratie: Mei 2007
  • Laatst online: 05-08-2013
ik kan printvormen perfect callen zonder die backslash,
straffer nog, het werkt niet met die backslash vanuit de main