-------------
---aaa---
あ
い
う
---bbb---
か
き
く
--------------
上記のようなテキストファイルがあります。
この場合、
@aaa,@bbb (変数名は事前に分かっています)
にそれぞれ配列に入れたい
どのようにすると、スマートにそれぞれ配列に入れることができますか?
一応、自分でもやってみて動きはするのですが、仮に---ccc---のブロックができると対処できません。
open(F,"<$test");
my @f = <F>;
close F;
shift @f;
chomp @f;
for(@f){
if($_ =~ m/--bbb--/){last;}
if(length($_) <= 4){last;}
push(@aaa,$_);
}
@f = reverse @f;
for(@f){
if($_ =~ m/--bbb--/ ){last;}
if(length($_) <= 4){next;}
push(@bbb,$_);
}
No.1
- 回答日時:
eval をつかってみました。
最後の2行の
print @aaa,"\n";
print @bbb,"\n";
は確認用です。
ーーーーーーーーーーーーーーーーーーーーー
open(F,"<$test");
my @f = <F>;
close F;
for(@f){
chomp($_);
if ($_ =~ m/---([a-z]{3})---/){
$var = $1;
$str = '@' . $var . '= [];';
eval($str);
next;
}
if(length($_) <= 4){next;}
$str = 'push(@' . $var . ',"' . $_ . '");';
eval($str);
}
print @aaa,"\n";
print @bbb,"\n";
No.2ベストアンサー
- 回答日時:
No1です。
連投すみません。
No1は、破棄してください。
open(F,"<$test");
my @f = <F>;
close F;
for(@f){
chomp($_);
if ($_ =~ m/---([a-z]{3})---/){
$var = $1;
$str = '@' . $var . '= [];';
eval($str);
next;
}
if(length($_) <= 4){next;}
$str = 'push(@' . $var . ',\'' . $_ . '\');';
#print($str);
eval($str);
}
print @aaa,"\n";
print @bbb,"\n";
再度、回答いただきありがとうございます。
コンパイラーが通りました。
evalを使ってする方法があるのですね!
大変勉強になりました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) ¥マークを含むパスの処理について(マクロ、または関数) 2 2022/12/25 02:11
- JavaScript 指定したパスが現URLに含まれていたら特定要素を削除するJavascriptのコードを教えてください 2 2023/04/27 17:58
- その他(データベース) カラム上の重複を削除するクエリを教えてください 3 2022/04/12 14:11
- JavaScript jsonテキストデータの並び替えができるサービスを教えてください 2 2022/08/05 20:16
- Visual Basic(VBA) Excel VBAでAA(BBB) → BBB.AA に置換したい 2 2022/10/30 13:59
- Excel(エクセル) Excel VBA 3 2023/04/22 10:46
- SQL Server ACCESSで3ファイルを結合して、表を作成するやり方を教えて下さい。 17 2022/08/15 20:34
- SQL Server ACCESSで複数テーブルを結合して、リストを作る方法を教えてください。 2 2022/08/12 19:32
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Windows 10 バッチファイルの記述法とルールについてアドバイスをお願いいたします。 1 2022/04/13 10:50
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Perlで<select multiple>の複数...
-
リストボックスに縦スクロール...
-
for文とforeach文について
-
perlで2次元配列をサブルーチ...
-
2次元配列の扱い
-
perl このテキストファイルを簡...
-
VBA 二次元配列 ループの書き方
-
文字の整列(printf)
-
二次元配列における要素数のは...
-
Powershell $変数 = @()の空配...
-
do-while文での無限ループ?
-
perl 配列名変数指定するには
-
一致する要素が格納されている...
-
プログラミングについて。 1つ...
-
文字列を変数名として扱う方法
-
エクセルの当番表を作っていま...
-
チェックデジットについて
-
ネットワークループとルーティ...
-
どなたかこのプログラミングを...
-
VBA for i=1 to lastrow
マンスリーランキングこのカテゴリの人気マンスリー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での値...
-
組み合わせについての質問です...
-
配列を初期化する時ってどうす...
おすすめ情報