簡體   English   中英

Perl:更新CSV文件的每一行中的字段

[英]Perl: Update a field in each line of a CSV file

假設我有一個包含數千行的CSV文件,類似於下面這一行:

1,弗雷德,史密斯,“11,erewhon大道”,“XYZ公司,101路”,“020 123456”,英國

我想使用Perl僅在CSV文件中更新電話號碼字段。 我認為Text :: CSV是最好的方法,但我不知道如何使用它來更新字段並將其寫回。

我必須RTFM - 我想這會做到:

use Text::CSV;

my @rows;
my $csv = Text::CSV->new ( { binary => 1 } )  # should set binary attribute.
             or die "Cannot use CSV: ".Text::CSV->error_diag ();

open my $fh, "<:encoding(utf8)", "test.csv" or die "test.csv: $!";
while ( my $row = $csv->getline( $fh ) ) {
   $row->[6] = get_new_tel_number();
   push @rows, $row;
}
$csv->eof or $csv->error_diag();
close $fh;

$csv->eol ("\r\n");

open $fh, ">:encoding(utf8)", "new.csv" or die "new.csv: $!";
$csv->print ($fh, $_) for @rows;
close $fh or die "new.csv: $!";

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM