0

参照されるサブルーチンがほとんどなく、参照されるサブルーチンに値を渡す必要があります。それを行う方法はありますか。

   #Sample Code
   sub CreateHtmlBox {
     my ($box_type,$hash_ref) = @_;
     my %subCall = (
        'singlebox'   =>  \&CreateSingleBox   ,
        'multiplebox' =>  \&CreateMultipleBox
              );

     my $htmlCode = $subCall->($box_html);
   }

   sub CreateSingleBox {
    my ($box_type) =@_;
    #...................
    return $htmlCode;
   }

参照されたサブルーチンを呼び出して、ハッシュの参照を渡したい。

   CreateSingleBox($hash_ref)
4

1 に答える 1

2

コードリファレンスとして呼び出す前に、ハッシュ内の特定の要素にアクセスする必要があります。いえ

# WRONG! Variable $subCall does not exist.
my $htmlCode = $subCall->($box_html);

本当にあるべき

my $htmlCode = $subCall{box_type}($box_html);

結果のコードは次のようになります。

use strict;
use warnings;

sub CreateHtmlBox {
    my ($box_type, $hash_ref) = @_;
    my %subCall = (
        singlebox   => \&CreateSingleBox,
        multiplebox => \&CreateMultipleBox,
    );
    return $subCall{$box_type}($hash_ref);
}

sub CreateSingleBox {
    my ($box_type) = @_;
    my $htmlCode= "<p>" . $box_type->{a} . "</p>";
    return $htmlCode;
}

print CreateHtmlBox("singlebox",{a => 1})
于 2013-04-09T12:35:17.707 に答える