3

パラメータを動的に渡そうとしています。Perl 関数を使用したいのですgiven(){}が、何らかの理由でそれ以外の内部では使用できません。これが私が持っているものです。

print(given ($parity) {
   when (/^None$/) {'N'}
   when (/^Even$/) {'E'}
   when (/^Odd$/)  {'O'}
});

これで、この前に変数を宣言して関数内で使用できることがわかりましたprint()が、コードをよりクリーンにしようとしています。if-then-else複合ステートメントを使用しないのと同じ理由です。それが役立つ場合は、ここにエラーがあります

syntax error at C:\Documents and Settings\ericfoss\My Documents\Slick\Perl\tests\New_test.pl line 22, near "print(given"
Execution of C:\Documents and Settings\ericfoss\My Documents\Slick\Perl\tests\New_test.pl aborted due to compilation errors.
4

1 に答える 1

8

式の中にステートメントを入れることはできません。

print( foreach (@a) { ... } );  # Fail
print( given (...) { ... } );   # Fail
print( $a=1; $b=2; );           # Fail

ただしdo、それを達成するのに役立ちます。

print( do { foreach (@a) { ... } } );  # ok, though nonsense
print( do { given (...) { ... } } );   # ok
print( do { $a=1; $b=2; } );           # ok

しかし、真剣に、ハッシュが必要です。

my %lookup = (
   None => 'N',
   Even => 'E',
   Odd  => 'O',
);

print($lookup{$parity});

あるいは

print(substr($parity, 0, 1));
于 2012-12-11T16:58:58.467 に答える