gpt4 book ai didi

perl - 使用 Text::CSV 根据变量内容在 csv 文件上打印一行

转载 作者:行者123 更新时间:2023-12-04 22:11:02 25 4
gpt4 key购买 nike

我的脚本相当大,但我将在这里简化代码。
假设我创建了一个 CSV 并像这样编写标题:

my $csv = Text::CSV->new ({binary => 1}, eol => "\n");
open(my $out, ">", "$dir/out.csv") or die $!; #create
$out->print("CodeA,CodeB,Name,Count,Pos,Orientation\n"); #I write the header

假设我将一些值存储在不同的变量中,并且我想将这些变量写成 CSV 中的一行。
我无法弄清楚如何,因为在 Text::CSV 文档中没有清楚地解释打印,没有直接的例子,我不知道数组 ref 是什么。

最佳答案

这是一个使用 Text::CSV 的简单示例写入 CSV 文件。它生成标题行和数据行,并从固定数据中生成。

#!/usr/bin/env perl
use strict;
use warnings;
use Text::CSV;

my $csv = Text::CSV->new({binary => 1, eol => $/ })
or die "Failed to create a CSV handle: $!";

my $filename = "output.csv";

open my $fh, ">:encoding(utf8)", $filename or die "failed to create $filename: $!";

my(@heading) = ("CodeA", "CodeB", "Name", "Count", "Pos", "Orientation");
$csv->print($fh, \@heading); # Array ref!

my(@datarow) = ("A", "B", "Abelone", 3, "(6,9)", "NW");
$csv->print($fh, \@datarow); # Array ref!

close $fh or die "failed to close $filename: $!";

该行数据被收集在一个数组中——我使用了 @heading@datarow .如果我输出多行,则可以在 @datarow 中收集或创建每一行然后输出。 $csv->print 的第一个参数应该是 I/O 句柄 — 这里是 $fh ,输出文件的文件句柄。第二个应该是数组引用。使用 \@arrayname是创建数组 ref 的一种方法; Text::CSV 模块的输入例程也创建和返回数组引用。

注意 Text::CSV->new 中使用的符号之间的区别。调用和您的示例中使用的符号。另请注意,您的 $out->print("…"); call 使用的是基本文件 I/O,与 Text::CSV 无关。对比 $csv->print($fh, …) .

其余代码或多或少是样板文件。
output.csv
CodeA,CodeB,Name,Count,Pos,Orientation
A,B,Abelone,3,"(6,9)",NW

请注意,带有嵌入逗号的值被 Text::CSV 模块的引号包围。其他值不需要引号,所以他们没有得到它们。您可以使用 Text::CSV->new 的选项调整 CSV 输出格式的细节。 .

关于perl - 使用 Text::CSV 根据变量内容在 csv 文件上打印一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34253229/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com