[解決済み] Perl で、$variable が定義され、長さが 0 でない文字列を含んでいるかどうかを簡潔に確認するにはどうしたらよいですか?
2023-04-12 13:29:50
質問
現在、以下のようなPerlを使って、変数が定義されているか、テキストが含まれているかをチェックしています。私はチェックする必要があります
defined
を最初にチェックして、'uninitialized value' 警告を回避しています。
if (defined $name && length $name > 0) {
# do something with $name
}
もっと良い(おそらくもっと簡潔な)書き方はないのでしょうか?
どのように解決するのですか?
定義済みかどうかのチェックをよく見かけますが、これはundef値を使ったときの警告に対処する必要がないためです(Perl 5.10では問題のある変数を教えてくれますし)。
Use of uninitialized value $name in ...
そのため、この警告を回避するために、人々はあらゆる種類のコードを考え出し、そのコードはバブルガムやダクトテープのようなものではなく、ソリューションの重要な部分のように見え始めるのです。時には、回避しようとしている警告を明示的にオフにすることで、自分が何をしているかを示す方が良い場合もあります。
{
no warnings 'uninitialized';
if( length $name ) {
...
}
}
その他の場合は、データの代わりに何らかのNULL値を使用します。例えば
Perl 5.10のdefined-or演算子は
を使えば
length
を、警告を引き起こす変数の代わりに明示的な空文字列(定義され、長さゼロを返す)を与えることができます。
use 5.010;
if( length( $name // '' ) ) {
...
}
Perl 5.12 では、もう少し簡単です。
length
は未定義の値に対しても未定義を返すからです。
. それは少しばかげたことのように見えるかもしれませんが、それは私がなりたかったかもしれない数学者を喜ばせるものです。それは警告を発しない、それがこの質問が存在する理由です。
use 5.012;
use warnings;
my $name;
if( length $name ) { # no warning
...
}
関連
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] Bashで文字列が部分文字列を含むかどうかをチェックする方法
-
[解決済み] ある文字列が特定の単語を含んでいるかどうかを確認するにはどうすればよいですか?
-
[解決済み] JavaScriptで変数が文字列かどうかをチェックする
-
[解決済み] どうすれば、文字列中のリテラルな中抜き文字を印刷し、また.formatを使用することができるのでしょうか?
-
[解決済み] 文字列が空かどうかを確認する方法は?
-
[解決済み] ある文字列が他の文字列と "StartsWith" しているかどうかを確認する方法は?
-
[解決済み] Objective-Cで、ある文字列が他の文字列を含んでいるかどうかを調べるにはどうすればよいですか?
-
[解決済み] テキストファイルを文字列変数に読み込んで、改行を除去するには?
-
[解決済み] Perl CGI スクリプトのトラブルシューティングはどのようにすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] CPANにすべての依存関係をインストールするように指示するにはどうしたらいいですか?
-
[解決済み] なぜPerl 5の関数プロトタイプはダメなのか?
-
[解決済み] Perl のフラグ -pe, -pi, -p, -w, -d, -i, -t?
-
[解決済み] なぜstrictとwarningを使うのか?
-
[解決済み] Perlで文字列が空かどうかをチェックする適切な方法は何ですか?
-
[解決済み] Perl CGI スクリプトのトラブルシューティングはどのようにすればよいですか?
-
[解決済み] Perlで "my "キーワードはどのように使うべきですか?
-
[解決済み] Perlで変数が数値を持っているかどうかを判断するには?
-
[解決済み] unixで任意のスクリプトをデーモン化するには?
-
[解決済み] use utf8;を使用すると「印刷時の文字が太い」と言われる