1

Perl を使用して、csv ファイルの各行のリンクの最初のインスタンスにトラッキング コードを追加したいと考えています。どうすればそれができますか?

入力:

ID, text1, link1, text2, text3, link2
1234, something, http://www.example.com/a/b/c, "lorem", "ipsum", http://www.example.com/image.gif
1235, something, http://www.example.com/dddd, "lorem", "ipsum", http://www.example.com/image.gif
1236, something, http://www.example.com/e/f/g/h, "lorem", "ipsum", http://www.example.com/image.gif

出力:

ID, text1, link1, text2, text3, link2
1234, something, http://www.example.com/a/b/c?tracking_code=1&tr2=2, "lorem", "ipsum", http://www.example.com/image.gif
1235, something, http://www.example.com/dddd?tracking_code=1&tr2=2, "lorem", "ipsum", http://www.example.com/image.gif
1236, something, http://www.example.com/e/f/g/h?tracking_code=1&tr2=2, "lorem", "ipsum", http://www.example.com/image.gif
4

1 に答える 1

3

CSV ファイルを適切に処理するには、Text::CSVを使用します。

#!/usr/bin/perl
use warnings;
use strict;

use Text::CSV;

my $file = 'file.csv';

my $csv = 'Text::CSV'->new({allow_whitespace => 1,
                            eol => $/,
                           }) or die 'Text::CSV'->error_diag;
open my $CSV, '<', $file or die $!;

my $header = $csv->getline($CSV);
while (my $row = $csv->getline($CSV)) {
    $row->[2] .= '?tracking_code=1&tr=2';
    $csv->print(*STDOUT{IO}, $row);
}
$csv->eof or $csv->error_diag;
于 2013-08-20T18:33:39.353 に答える