0
我正在尋找更好的方法在文件的第一列上的內容上添加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的陣列,並添加1從3號線到最後每一個內容,但我認爲這不是一個好方法。請讓我知道更新文件內容的更好方法。
#!/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;
太好了。一個簡單的問題。我該怎麼辦如果我只是更新文件,而不是創建一個新文件? –
對不起,還有一件事。是否可以在頂級Perl腳本中調用單行程。我用:system('perl',$ script)== 0或者死「執行$ script:\ $?= $?」失敗。調用頂級Perl腳本中的另一個perl腳本,但我不知道如何調用單線程perl。 –
我已更新我的回答以迴應您的意見。 – Sean