おそらく単純な事だと思われますが、
不慣れなものでお付き合いいただけますとありがたいです。
if( $hoge == $testdata){
# 条件が一致した場合の処理
}
$hoge には、2 が入っています。(文字列)
$testdata には、2,6,10 が入っています。(文字列)
1対1であれば、上記の記述でいけるのですが、
カンマ区切りの復数の値と一致判定する方法がわかりません。
まず、配列にして
my @testdata_hairetu = split(/,/, $testdata);
などやってみましたが、
その後の条件文との絡みなどで詰まっています。
復数値がある場合に一つ一つ照合(判定)していく方法をご教授いただけないでしょうか。
foreachの内部でifとかかなと調べ中です。
perlは記述方法がいろいろあるようなのですが、できれば短さよりもわかり易い方が有難いです。
どうぞよろしくお願いします。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
$testdataの前後に,を追加して・・
$testdata = ','.$testdata.',';
if( $testdata =~ /,$hoge,/){print "OK $hoge in \$testdata\n";}
と文字列のままチェックするのが簡単かと・・
>$hoge には、2 が入っています。(文字列)
Perlは特に指定しなくても、その場で数値とも文字とも解釈してくれる。
my @testdata_hairetu = split(/,/, $testdata);
なら
while(<@testdata_hairetu>){
if($_ == $hoge ){$check = 1;last;}
}
if($check == 1){print "OK $hoge in \$testdata\n";}
else{print "Not foud $hoge in \$testdata\n";}
この回答への補足
ご助言ありがとうございます!
いったんデータを書き換えるところから始まるのですね。
「数値と文字」の件もありがとうございました。
ご提示いただいたソース拝見しました。
whileとforeachの使い方もよくわかっていないので、まずはそのあたりから調べてみます。
調査を進めていたところ、以下の記述で判定できる事がわかりました。
my @testdata_arr = split(/,/, $testdata);
if( grep( $_== $hoge, @testdata_arr ) > 0){
# 条件に一致した場合の処理
}
ただ、記述の意味が把握できていないので、
どういった処理がどういった手順で成されているのか教えていただけますと嬉しいです。
普通はこういう事をしないとか、おすすめできないとか他にもあれば、なんでもご指摘ください。
(他にアドバイスいただいた方にも同様の旨、ご質問させていただきました。ご容赦ください。)
No.1
- 回答日時:
方針はいくつも考えられるけど, 言われるように
配列にばらして for と if
が分かりやすいと思う.
まあ, だったら最初から ($testdata というスカラーの代わりに) 配列を使っておけばいいわけだが.
この回答への補足
ご助言ありがとうございます!
調査を進めていたところ、以下の記述で判定できる事がわかりました。
my @testdata_arr = split(/,/, $testdata);
if( grep( $_== $hoge, @testdata_arr ) > 0){
# 条件に一致した場合の処理
}
ただ、記述の意味が把握できていないので、
どういった処理がどういった手順で成されているのか教えていただけますと嬉しいです。
普通はこういう事をしないとか、おすすめできないとか他にもあれば、なんでもご指摘ください。
(他にアドバイスいただいた方にも同様の旨、ご質問させていただきました。ご容赦ください。)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java Java 南京錠 2 2023/02/04 11:46
- Excel(エクセル) VBAで “:” を含むセルの特定 2 2023/05/11 16:30
- Visual Basic(VBA) Excel(VBA) 特定の条件に該当する行の値、書式を同じセルにコピ&ペーストしたいです 1 2022/05/21 18:18
- Excel(エクセル) Excel 値を返す数式についてです 3 2022/11/21 20:08
- C言語・C++・C# C言語:数値の桁数指定についての質問です。 8 2022/05/26 23:53
- Excel(エクセル) ExcelのIF関数について 4 2023/05/24 12:54
- Visual Basic(VBA) VBA 改行コードの取り方 1 2022/03/22 14:14
- JavaScript javascriptで文字分割は、 split() などメソッド不要??? 4 2023/02/06 22:50
- Excel(エクセル) 【画像あり】A1が●+B1と同じ文字がB列にある+C1と同じ文字がC列にある場合D1に〇を付ける 3 2023/03/09 18:18
- JavaScript JavaScriptで「〇以上▲まで」の書き方 1 2022/07/20 14:44
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA 多次元配列を用いてグルー...
-
変数名(配列)の中の変数
-
ファイルからデータを読み込ん...
-
エクセルVBAでTransposeの不思議
-
2次元配列の扱い
-
チェックボックスのperlでの値...
-
Strawberry Perl for Windows ...
-
Excel VBA ユーザーフォームの...
-
perlで2次元配列をサブルーチ...
-
if文条件式で配列を使用したい
-
VBAでの一時停止と再開の方法
-
プログラミングについて。 1つ...
-
どなたかこのプログラミングを...
-
UWSCの終了の仕方
-
ループ利尿薬について
-
うるう年判定のアルゴリズム
-
JSPでのrequest.getParameterに...
-
For文を使った九九表の作成
-
サンプルの意味
-
桁数指定と四捨五入
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAのautofilter、criteriaの配...
-
二次元配列のインデックスについて
-
リストボックスに縦スクロール...
-
Excel VBA ユーザーフォームの...
-
マクロ Publicでの配列定義
-
エクセルVBAでTransposeの不思議
-
Strawberry Perl for Windows ...
-
二次元配列における要素数のは...
-
perlで2次元配列をサブルーチ...
-
クラスに配列を渡す方法
-
Dim flag(4) as boolean で配列...
-
文字の整列(printf)
-
perlで配列の要素が空なのを知...
-
jcode->jfold で禁則処理
-
VB6で配列の最大値を簡単に求め...
-
perl 配列の要素数について
-
ファイル名に日付・時刻を付与...
-
チェックボックスのperlでの値...
-
組み合わせについての質問です...
-
配列を初期化する時ってどうす...
おすすめ情報