No.1
- 回答日時:
ええと、結合というのがよくわかりませんが、それは
@aa = ('aaa', 'abc-d', 'sss', 'xx-yy', 'z-');
だったとき
@aa = ('abc-d', 'xx-yy', 'z-');
と/-/にマッチするものだけにしたい、という意味でしょうか?
ならば、別の配列を用意してそこに条件が合ったものだけコピーして、
最後に元の配列にまるごと移すようにするのはどうでしょう。
foreach $aa (@aa) {
if ($aa =~ /-/) {
push(@bb, $aa);
}
}
@aa = @bb;
なお、これと同じことを1行で書けるgrepというものがあります。
@aa = grep {/-/} @aa;
どちらでもお好きなほうをどうぞ。
もしお使いの本にgrepの解説がないのなら、それはかなり昔の書物なので
廃棄しても基本的に問題ありません。
この回答への補足
回答ありがとうございます。
説明不足で申し訳ありません。
具体的にいうと、
@aa = ('[abc', 'def]', '[ghi]', '[jkl', 'nmo', 'pqr]');
を
@aa = ('[abcdef]', '[ghi]', '[jklnmopqr]');
にしたいのです。
No.2
- 回答日時:
または、条件を満たすものを文字列として「結合」させ、
満たさない要素はそのままコピーする、というのなら
foreach $aa (@aa) {
if ($aa =~ /-/) {
$tmp .= $aa;
} else {
push(@bb, $aa);
}
}
push(@bb, $tmp);
などのやりかたがありますね。文字列結合して貯めていた$tmp
を最後に@bbの末尾要素として付け加える方法です。
[余談]
これこれこういうデータが、最終的にこうなってほしい、と
はっきり書いてあるとすごくわかりやすい質問となると思いますよ。
No.3ベストアンサー
- 回答日時:
ああ、そういうことをおやりになりたかったんですか。
もちろん、「[」が出てきたときに一時変数に入れ、「]」が
出てきたときにまとめてpushして次の要素に備える…でも
できますね。練習としてチャレンジしてみてもよろしいでしょう。
別解として、私なら
@aa = (join('', @aa) =~ /\[.*?\]/g);
ですかね。
ちょっと古いPerlなら
@aa = (join('', @aa) =~ /\[[^\]]*\]/g);
かな。わざと1行で書いてみました。解説が必要なら遠慮なく
おっしゃってください。しかしいろんな書き方ができますねえ、
Perlは。まさにThere Is More Than One Way To Do Itですな。
無理やりやったらなんとか出来ました(^^;
修正は来週の土日まで持越しです。
こんなのでもプログラミングができるなんて、
ほんとTIMTOWTDIのおかげですね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAで大量データの処理 3 2022/11/15 21:53
- PHP SQLとPHPの連結方法がわからないのでアドバイスお願い致します 1 2022/07/12 12:16
- C言語・C++・C# C言語の課題が出たのですが自力でやっても分かりませんでした。 要素数がnであるint型の配列v2の並 3 2022/11/19 17:41
- PHP PHPの構文で間違えが分からない 5 2022/07/11 16:38
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- Perl perlで2次元配列をサブルーチンに値渡しで渡す 5 2022/12/17 18:49
- Excel(エクセル) エクセルデーターの並び替え 5 2022/08/06 09:59
- JavaScript 二次元配列の全要素の全要素を区切り文字無しで連結する最も単純な書き方を教えてください 3 2023/06/09 12:51
- Visual Basic(VBA) Excel VBAでAA(BBB) → BBB.AA に置換したい 2 2022/10/30 13:59
- Excel(エクセル) Excelの相談 4 2023/03/03 09:51
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAのautofilter、criteriaの配...
-
二次元配列のインデックスについて
-
二次元配列における要素数のは...
-
Strawberry Perl for Windows ...
-
可変長配列を、動的確保した固...
-
リストボックスに縦スクロール...
-
2次元配列or複数回のファイル読...
-
Excel VBA ユーザーフォームの...
-
perlで配列の要素が空なのを知...
-
perlで2次元配列をサブルーチ...
-
perl qw(aaa bbb ccc)[$hoge]...
-
文字列の分割について
-
画面を強制的に再描画させる方法
-
VBAで3秒だけ時間を止めたい
-
DoEventsが必要な理由について
-
GIFアニメをループさせたくない
-
vba
-
アクティブセルから、A列最終行...
-
データベースから取得したデー...
-
VBA Dir関数でファイルをループ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
二次元配列のインデックスについて
-
VBAのautofilter、criteriaの配...
-
Excel VBA ユーザーフォームの...
-
二次元配列における要素数のは...
-
マクロ Publicでの配列定義
-
Strawberry Perl for Windows ...
-
リストボックスに縦スクロール...
-
クラスに配列を渡す方法
-
Dim flag(4) as boolean で配列...
-
エクセルVBAでTransposeの不思議
-
perlで2次元配列をサブルーチ...
-
perlで配列の要素が空なのを知...
-
perl 配列の要素数について
-
組み合わせについての質問です...
-
隣同士の数字を足し合わせる
-
複数の配列の全ての組み合わせ...
-
perl 初等プログラミングについて
-
jcode->jfold で禁則処理
-
一致する要素が格納されている...
-
チェックボックスのperlでの値...
おすすめ情報