perl - 用 perl 编写 CSV

标签 perl csv

我正在解析 html 文件并使用以下代码将源代码写入单独的单元格:

open(MYFILE ,">>Test.csv");
print MYFILE qq|"$name","$table","$picture"\n|;
close MYFILE;

其中变量 $table 包含以下内容::

<table cellspacing=0" cellpadding="0" style="text-align: center;">
<tbody>
<tr>
<td valign="middle" class="td1">
<p class="p1"><span class="s1"><b><i><u><font size="5">Brand New in Package 64 GB Black/Silver USB 2.0 Flash Drive</font></u></i></b></span></p>
<ul class="ul1">
<li class="li2">Do not be fooled by the low price! The flash drives are EXCELLENT quality and I can assure you that you will be more than pleased</li><li class="li2">True Capacity</li>
<li class="li2">&nbsp;I am the fastest seller you will find and having your item shipped to you as fast as possible is my first priority</li>
<li class="li2">Most purchases will be shipped within 24 hours if ordered Monday - Friday</li>
<li class="li2">If you have any questions please feel free to ask!</li></ul></td></tr></tbody></table><center><br></center><center><br></center><center><font size="7" color="#00429a">Need more space? Check out my 128 GB Listings for as low as </font><font size="7" color="#ad001f"><b><u>$33.99</u></b></font><font size="7" color="#00429a">!!</font></center><p></p>"

这使得 CSV 占据并重叠下一个单元格。我怎样才能让它们只在一个单元格中打印?

更新

@TLP 谢谢,但如果我使用此代码

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: $!";
$csv->print ($name,$table);
close $fh;

它仍然显示错误“预期字段是数组引用”

更新

谢谢SzG,我还有一个疑问如何向其中添加换行符,如果我使用

,我想逐行打印它
$csv->print($fh,["\n"]); 

它仍然没有按预期工作。我认为我在某些地方错了

最佳答案

怀疑您从未使用过打开的 $fh 文件句柄。是的,csv_print 需要一个文件句柄和一个数组引用。

在您的原始代码中,您似乎想要附加到现有的 CSV 文件 open(MYFILE ,">>Test.csv")。所以我也以这种方式更改了新代码。

$csv = Text::CSV->new ( { binary => 1 } )  # should set binary attribute.
or die "Cannot use CSV: ".Text::CSV->error_diag ();                      
open $fh, ">>:encoding(utf8)", "Test.csv" or die "Test.csv: $!";         
$csv->print($fh, [$name, $table]);                                       
close $fh;                                                               

关于perl - 用 perl 编写 CSV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18828903/

相关文章:

Perl RawIP CWR 标志

javascript - JS 文件读取器 : Read CSV from Local File & jquery-csv

python - 如何选择txt文件中的某个字符串并将其列出在csv文件中?

perl DBIx sqlite {sqlite_unicode=>1}?

linux - 无法在 Perl 中设置 TCP_NODELAY - 关于权限的错误 - 为什么? (但我可以在 python 和 ruby​​ 中设置)

perl - 谷歌 oAuth2 未授权_客户端通过 refresh_token

linux - Perl 拆分和合并函数存在一些问题

javascript - 使用 Javascript 将 CSV 从 URL 解析为数组

python - 使用 numpy.genfromtxt 读取包含逗号的字符串的 csv 文件

java - Apache Derby : java. sql.SQLSyntaxErrorException