【发布时间】:2012-03-30 20:32:03
【问题描述】:
我的想法是我必须读取文件的每一行 (CSV) 并将特定位置的特定信息作为变量记住。 示例:
a;b;c;d;e;f123;g;h;i;j
我知道如何阅读每一行,但问题是如何保存f123 所在的信息并将其存储在变量中。有任何想法吗?
变量应该在每个循环中改变(当检查另一行时,变量应该改变)。
【问题讨论】:
我的想法是我必须读取文件的每一行 (CSV) 并将特定位置的特定信息作为变量记住。 示例:
a;b;c;d;e;f123;g;h;i;j
我知道如何阅读每一行,但问题是如何保存f123 所在的信息并将其存储在变量中。有任何想法吗?
变量应该在每个循环中改变(当检查另一行时,变量应该改变)。
【问题讨论】:
我建议你使用CPAN模块Text::CSV_XS
它可以使用任何用户指定的字符作为分隔符、分隔符和转义符,它有助于处理任何 csv 文件。
【讨论】:
my @list = split ";", $line;
my $value = $list[5];
【讨论】:
my $value = (split /;/, $line)[5] 但是,如果您可以引用分号,这将与输入中断,例如:a;b;c;"Quote: I have *plenty* of common sense; I just choose not to use it.";e;f123;i;j。使用诸如 Text::CSV 之类的 CSV 模块是更安全的选择。
$list[5] 推入数组中。push @arr,$list[5]; 然后您可以打印此数组。