• ベストアンサー

複数のperlの正規表現をひとつにまとめるには。

こんにちわ。perlの正規表現について教えてください。 unless ($a =~ /[0-9]/){ &err1('数字をいれてください'); } unless ($b =~ /[0-9]/){ &err1('数字をいれてください''); } unless ($c =~ /[0-9]/){ &err1('数字をいれてください''); 上の3つのunless文は$a,$b,$c以外はすべて同じなのでこれをひとつにしたいのですが、どうやって記述すべきでしょうか?($a,$b,$c=~ /[0-9]/)とか($a =~ /[0-9]/ or $b =~ /[0-9]/ or $c =~ /[0-9]/)ってやってみてもだめでした^^教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

とりあえず if ($a !~ /[0-9]/ || $b !~ /[0-9]/ || $c !~ /[0-9]/){ &err1('数字をいれてください'); } でいいですが ループにして foreach $x (($a, $b, $c)){ if($x !~ /[0-9]/){ &err1('数字をいれてください'); last; } } とかでもいいと思います

misamisa_77
質問者

補足

ありがとうございました。勉強になりました。

その他の回答 (2)

  • ttyp03
  • ベストアンサー率28% (277/960)
回答No.2

同じ処理が複数出てきたら関数化が基本ですね。 数字チェック関数を作りましょう。 それからif文でひとつにまとめたらどうですかね? if( numchk($a) || numchk($b) || nunchk($c) ) って感じで。

misamisa_77
質問者

補足

ありがとうございます。

  • kosa
  • ベストアンサー率25% (379/1464)
回答No.1

サブルーチン化するのはどうでしょうか? $a~$cを引数で持っていくってのはどうっすか?

関連するQ&A