ファイルの最初のカラムの内容に1を追加するより良い方法を探しています。私は1Perl - 最初のカラムに1を加えてファイルの内容を更新する
私の入力ファイルを追加することにより、最初の列上のファイルや更新内容をお読みください。(sparc_export.test)
export
3066
10500 cmp_top.iop.sparc0.exu.alu.byp_alu_rcc_data_e[6]
10500 cmp_top.iop.sparc0.exu.alu.byp_alu_rs3_data_e[51]
10500 cmp_top.iop.sparc0.exu.alu.byp_alu_rs1_data_e[3]
10500 cmp_top.iop.sparc0.exu.alu.shft_alu_shift_out_e[18]
10500 cmp_top.iop.sparc0.exu.alu.byp_alu_rs3_data_e[17]
10500 cmp_top.iop.sparc0.exu.alu.byp_alu_rs1_data_e[43]
...それは3000以上の行になります。私は、ファイルに望んでいた
は次のようになります(sparc_export.test)
export
3066
10501 cmp_top.iop.sparc0.exu.alu.byp_alu_rcc_data_e[6]
10501 cmp_top.iop.sparc0.exu.alu.byp_alu_rs3_data_e[51]
10501 cmp_top.iop.sparc0.exu.alu.byp_alu_rs1_data_e[3]
10501 cmp_top.iop.sparc0.exu.alu.shft_alu_shift_out_e[18]
10501 cmp_top.iop.sparc0.exu.alu.byp_alu_rs3_data_e[17]
10501 cmp_top.iop.sparc0.exu.alu.byp_alu_rs1_data_e[43]
私は2x2の配列としてファイルを読み取り、最後に3行目から各コンテンツの1を追加しますが、私は考えていますこれは良い方法ではありません。ファイルの内容を更新するより良い方法を教えてください。
#!/usr/bin/perl
use strict;
use warnings;
my $exportname="sparc_export.test";
#### read sparc_export.test
open(CSV,$exportname)||die("Cannot open export file $!");
my @export;
while(<CSV>){
my @row=split(/ /,$_);
push(@export,\@row);
}
for (my $i=2; $i < (scalar @export); $i +=1) {
$export[$i][0]= $export[$i][0]+1;
}
open(my $fh4, '>', 'sparc_export.test');
print $fh4 join("\n", @export);
close $fh4;
これは素晴らしいことです。簡単な質問ですどうすればいいですか?ファイルを更新するだけで、新しいファイルを作成しない場合はどうすればいいですか? –
申し訳ありませんが、もう1つ。トップのperlスクリプトでone-linerを呼び出すことは可能ですか?私は使用しました:system( 'perl'、$ script)== 0またはdie "は$ script:\ $?= $?を実行できませんでした。一番上のperlスクリプトで別のperlスクリプトを呼び出すことはできますが、私はその一行のperlをどのように呼び出すのか分かりません。 –
私はあなたのコメントに答えるために私の答えを更新しました。 – Sean