0

、 などの整数スカラー変数が$A_cineあり$B_cineます。

、、などのdisplay単一の引数を取るサブルーチンもあります。'A''B''C'

$letter = $_[0]サブルーチン内で割り当てます。$A_cineorの値を取得$B_cineして、新しいスカラー変数に代入したいと考えています$cine

私は試してみましたが、これは文字列として$cine = '$'.$view."_cine"認識されます(そうあるべきです)。ただし、以前に定義されたスカラーの数値を取得できるように解釈する方法はありますか?$cine$A_cine$A_cine$A_cine

4

3 に答える 3

8

シンボリック参照を使用するのは悪い考えです。代わりに、ハッシュを使用する必要があります。などの代わりに設定、発言%cine、使用します。その後、次のように書くことができます$cine{A}$A_cine

sub subroutine {
  my ($view) = @_;
  my $cine = $cine{$view};
  ...
}
于 2013-02-19T11:22:40.763 に答える
7

シンボリック参照を作成しようとしています。

sub display {
    my $letter = $_[0];

    no strict 'refs';
    my $cine = ${ $letter . "_cine" };

    print $cine, "\n";  # for example
}

この目的には、ほとんどの場合、ハッシュを使用する方が適切です。詳細については、シンボリック参照の使用が危険である理由について、Mark Dominus( Higher Order Perlの作成者)による3部構成のシリーズを参照してください。

于 2013-02-19T11:16:45.627 に答える
4

上記のようにシンボリック参照を作成できますが、通常はハッシュを使用する方が簡単です

%cine={}
$cine{'A'}=37;
$letter="A"
print $cine{$letter}
于 2013-02-19T11:21:29.400 に答える