における等価演算子を選択します。そのリストの各項目について動的Iは混合型(文字列や数字)の値のリストを持っているPerlの
my @list = (123, 'foo', 34.5, 'bar', '67baz');
を、Iは(均等ランダムタイプの入力と比較する必要があります何かをするために、文字列または数値):両方のオペランドが同じ型(この場合は数字)であるが、警告を上げおよび/または生成されますとき
my $input = 345;
foreach my $elem (@list) {
if ($input == $elem) {
# do something
} else {
# do something else
}
}
比較(==
)が正常に動作します型が不一致のときは間違った結果になります(このコードスニペットでは、s文字列とすることができます。したがって、代わりにeq
を使用する必要があります)。
私は、この比較の問題を解決するためのあなたの好みの方法についていくつかの情報を得たいと思います。または、オペランドの型を指定して、適切なタイプの比較を動的に選択(および実行)するモジュールがあるかもしれません。
looks_like_number()
からScalar::Util
までの方法を知っていますが、どのタイプの値を使用しているかを確認するのは良い方法です。前もって感謝します。
'345.0'と' 3.45e2'にマッチさせるには '345'が必要ですか?そうでなければ、常に 'eq'を使うべきです。 – Borodin