1

私はそのようなステートメントの選択を持っています:

my $name = $criteria->{'name'} if $criteria->{'name'};
my $age  = $criteria->{'age'}  if $criteria->{'age'};
my $dob  = $criteria->{'dob'}  if $criteria->{'dob'};
.
.
.
# there are around 8 of these

そして、私は次のようなことをしたいと思います。

foreach (qw/name age dob .../) {
    ${$_} = $criteria->{$_} if $criteria->{$_};
}

私は以前にこれを行ったことがあると確信していますが、それを使用しuse strictて試してみるとエラーが発生しました。

これを行う方法はありますか?それとも私がやりたいことをするためのより良い方法はありますか?私は本当に怠け者ですが、それを行う方法があれば、見るのは面白いでしょう。

可能であれば、メモリ単位で実行する方が効率的でしょうか?スクリプトの速度を改善しようとしています。

4

1 に答える 1

7

より良い方法は、現在のパッケージ名前空間をハッシュとして使用する代わりに、既存のハッシュを使用することです。いいえ、あなたはあなたがやろうとしていることでメモリや時間を節約していません。実際、あなたは両方の多くを使用しています。

于 2013-01-30T15:50:37.123 に答える