おそらく単純な事だと思われますが、
不慣れなものでお付き合いいただけますとありがたいです。
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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Dim flag(4) as boolean で配列...
-
Processing言語 listの配列数
-
VBAのautofilter、criteriaの配...
-
csv形式のデータの一部を削除し...
-
GIFアニメをループさせたくない
-
WHILE (CHKIMG(”A.bmp”)=FALSE)...
-
UWSCの終了の仕方
-
DoEventsが必要な理由について
-
VBのReturnの使い方
-
VBA for文が止まらない
-
perl 文字列検索後に指定フィー...
-
重複ファイルを削除したいので...
-
範囲指定したセルを1つずつ飛...
-
VBAでの一時停止と再開の方法
-
FortranのDO構文はintegerじゃ...
-
[perl]メソッドの引数で受け取...
-
友人にユニコ?ぽいものを送って...
-
テキストボックスの名前に変数...
-
C言語の関数ポインタのイメージ...
-
VBAコードでメッセージがうまく...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
クラスに配列を渡す方法
-
エクセルVBAでTransposeの不思議
-
Excel VBA ユーザーフォームの...
-
VBAのautofilter、criteriaの配...
-
Strawberry Perl for Windows ...
-
二次元配列における要素数のは...
-
VB6で配列の最大値を簡単に求め...
-
リストボックスに縦スクロール...
-
文字の整列(printf)
-
ファイル名に日付・時刻を付与...
-
DataGridViewに配列の値を表示...
-
チェックボックスのperlでの値...
-
一致する要素が格納されている...
-
隣同士の数字を足し合わせる
-
perlで配列の要素が空なのを知...
-
条件に一致した塩基配列を含む...
-
perlで2次元配列をサブルーチ...
-
マクロ Publicでの配列定義
-
二次元配列のインデックスについて
-
perl 配列の要素数について
おすすめ情報