-------------
---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.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を使ってする方法があるのですね!
大変勉強になりました!
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";
お探しの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ランキング
-
配列を使わずに、数字(連番)...
-
文字の整列(printf)
-
perlで配列の要素が空なのを知...
-
Strawberry Perl for Windows ...
-
隣同士の数字を足し合わせる
-
基本情報技術者での質問です。
-
if elsif 構文と複数の配列の使用
-
2次元配列or複数回のファイル読...
-
チェックボックスのperlでの値...
-
perl 初等プログラミングについて
-
二次元配列における要素数のは...
-
配列の各要素に結合
-
文字列の分割について
-
二次元配列のインデックスについて
-
if文条件式で配列を使用したい
-
画面を強制的に再描画させる方法
-
VBのReturnの使い方
-
CSVファイルの特定の行だけを読...
-
範囲指定したセルを1つずつ飛...
-
EXCEL VBA ユーザーフォームの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAのautofilter、criteriaの配...
-
クラスに配列を渡す方法
-
二次元配列のインデックスについて
-
文字の整列(printf)
-
Dim flag(4) as boolean で配列...
-
マクロ Publicでの配列定義
-
エクセルVBAでTransposeの不思議
-
複数の配列の全ての組み合わせ...
-
Excel VBA ユーザーフォームの...
-
リストボックスに縦スクロール...
-
バイナリデータの検索(VB.NET2008)
-
可変長配列を、動的確保した固...
-
Strawberry Perl for Windows ...
-
perlで配列の要素が空なのを知...
-
if文条件式で配列を使用したい
-
VBScript 配列
-
VBA 二次元配列の1つ目を増...
-
二次元配列における要素数のは...
-
配列の各要素に文字列結合
-
Powershell $変数 = @()の空配...
おすすめ情報
