ファイル名:log.dat は以下の構造をしています。
"Key-01"|"参照"|"P2"|"yamada" (\n\r)←改行
"Key-02"|"書込"|"P5"|"minami" (\n\r)←改行
"Key-03"|"参照"|"P3"|"yamada" (\n\r)←改行
open(IN,"log.dat") || die "log.dat",": $!";
@log=<IN>;
close(IN);
で@logにデータを読み込んだ後、
foreach(@log){
$data = $_;
$data =~ s/ //g;
$data =~ s/\n//g;
$data =~ s/\r//g;
$data =~ s/"//g;
@second =split(/\|/ , $data); <---(1)
で配列@secondに格納するのですが、
この時、@secondを(\n\r)=改行で区切るように二次元配列にしたい
のです。
@second = (
[ Key-01 , 参照 , P2 , yamada ]
[ Key-02 , 書込 , P5 , minami ]
[ Key-03 , 参照 , P3 , yamada ] )
上記<---(1) の部分をどのように変更すればいいでしょうか。
No.1ベストアンサー
- 回答日時:
split の結果を配列のリファレンスにしてやって、
@secondにpushすればいいです。
こんな感じで。
ところで改行は \r\n ではなくて \n\rなんですか?
use strict;
use warnings;
use Data::Dumper;
my @second;
open my $fh, '<', 'log.dat' or die "log.dat",": $!";
foreach my $line (<$fh>) {
#chomp $line;
$line =~ tr /" \n\r//d;
push @second, [split /[|]/, $line];
}
close $fh;
print Dumper @second;
No.2
- 回答日時:
No.1でいいんですが、
File::Slurpをつかうとプログラムがすっきりします。
それと、Data::Dumpのほうか表示がすっきりしています。
#!Perl
use strict;
use File::Slurp;
use Data::Dump qw(dump);
my @log = read_file("log.dat");
my @second;
for (@log) {
chomp;
my @data = split /\|/;
s/(^"|"$)//g for @data;
push @second => \@data;
}
print dump(\@second);
__END__
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# pythonのファイルの並びでの読み込みとリストについて 4 2022/04/13 03:52
- JavaScript Json のキーと値の出力の違いについて 2 2022/06/14 20:22
- その他(プログラミング・Web制作) pandasでまとめてインデックスを削除するにはどうすればいいですか? たとえば、以下のプログラムで 1 2022/07/31 23:09
- MySQL MYSQL エラー 2 2022/10/18 11:37
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- UNIX・Linux UbuntuにROSをインストールしたい 1 2023/03/06 12:28
- Visual Basic(VBA) エクセルVBAについて 8 2022/07/13 22:41
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- その他(プログラミング・Web制作) Fortranでの出力ファイル 2 2023/03/21 21:25
- C言語・C++・C# c言語の問題です 課題1 (二分探索木とセット) 大きさ size の配列 array を考える。す 2 2023/01/10 21:08
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ポインター引数の関数でコンパ...
-
stable diffusionのエラー
-
int型(2バイト)データの分割
-
エクセルVBA:日付データの変換...
-
c言語 Bitについて
-
linuxのシェルでファイル名に先...
-
printfの%eで指数部分の桁数を...
-
C#でのswitch文
-
テキストファイルの結合について
-
POSTで配列のデータを渡す方法は?
-
PINVOKEで構造体配列をマーシャ...
-
C言語 ファイル内のデータと入...
-
【Excel VBA】10進数を2進数に...
-
パイソン、データーサイエンス...
-
H8/36064を使ったシリアル通信...
-
UTF-8で5~6バイトになる文字コ...
-
Excel VBA メール作成について ...
-
10Mバイトて文字数に すると何...
-
char str[256]の256の意味は?
-
バイト列とバイナリ列の違いが...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
stable diffusionのエラー
-
ポインター引数の関数でコンパ...
-
printfの%eで指数部分の桁数を...
-
パイソン、データーサイエンス...
-
エクセルVBA:日付データの変換...
-
C#でのswitch文
-
int型(2バイト)データの分割
-
CreateProcessでの環境変数の設...
-
【Excel VBA】10進数を2進数に...
-
python 気象データの取得
-
テキストファイルの結合について
-
RegQueryValueExでの2バイト文字
-
linuxのシェルでファイル名に先...
-
'dataType' 引数を Null にする...
-
C言語についてです! 同じ年の...
-
オセロゲーム 2次元配列で困...
-
PINVOKEで構造体配列をマーシャ...
-
matlabのソースコードをpython...
-
C言語の勉強しています。すみま...
-
System.Collections.ArrayList ...
おすすめ情報