4

私は使用しています

if(exists $ENV{VARIABLE_NAME} && defined $ENV{VARIABLE_NAME})いくつかの場所で私の perl スクリプト。

コードが乱雑になり、その値が変数に割り当てられているように感じます。

$debug = $ENV{VARIABLE_NAME};

しかし、今existsではスカラー値をチェックできません。スカラー値の存在を確認する方法はありますか?

4

2 に答える 2

19

existsスカラーの概念はありません。ハッシュの場合、指定されたキーがハッシュに含まれるかどうか (たとえば、キーkeys %ENVが含まれるかどうか) がわかりますが、スカラーの場合は意味がありません。

existsしかし、環境変数の特定のケースでは、いずれにしてもテストは必要ありません。環境変数は常に文字列であるため、undef設定されていない限り決して文字列ではありません —それらexistsと同等にdefinedなります。if(defined $ENV{'VARIABLE_NAME'})したがって、またはと書くことができますif(defined $debug)

于 2013-08-01T23:14:13.740 に答える
7

existsそうです、スカラー変数には意味がありません。しかし、あなたはただ書くことができませんでしたif(defined $ENV{VARIABLE_NAME})か?存在しない場合は$ENV{VARIABLE_NAME}を返しundefます。

于 2013-08-01T23:13:46.317 に答える