私は使用しています
if(exists $ENV{VARIABLE_NAME} && defined $ENV{VARIABLE_NAME})いくつかの場所で私の perl スクリプト。
コードが乱雑になり、その値が変数に割り当てられているように感じます。
$debug = $ENV{VARIABLE_NAME};
しかし、今existsではスカラー値をチェックできません。スカラー値の存在を確認する方法はありますか?
existsスカラーの概念はありません。ハッシュの場合、指定されたキーがハッシュに含まれるかどうか (たとえば、キーkeys %ENVが含まれるかどうか) がわかりますが、スカラーの場合は意味がありません。
existsしかし、環境変数の特定のケースでは、いずれにしてもテストは必要ありません。環境変数は常に文字列であるため、undef設定されていない限り決して文字列ではありません —それらexistsと同等にdefinedなります。if(defined $ENV{'VARIABLE_NAME'})したがって、またはと書くことができますif(defined $debug)。
existsそうです、スカラー変数には意味がありません。しかし、あなたはただ書くことができませんでしたif(defined $ENV{VARIABLE_NAME})か?存在しない場合は$ENV{VARIABLE_NAME}を返しundefます。