1

我有一个正在读取的文件。我正在使用 perl 重新格式化日期。它是一个逗号分隔的文件。在其中一个文件中,我知道 element.0 是邮政编码,而 element.1 是计数器。每行可以有 1-n 个城市。我需要知道从 element.3 到行尾的元素数量,以便我可以正确地重新格式化它们。我想使用从 element.3 开始的 foreach 循环将其他元素格式化为单个字符串。

任何帮助,将不胜感激。基本上我正在尝试读取 csv 文件并创建一个 cpp 文件,然后可以在另一个平台上编译该文件作为该平台的插件。

最好的问候迈克尔古尔德

4

2 回答 2

2

你可以做这样的事情来从一行中获取字段:

my @fields = split /,/, $line;

要访问从 3 到结尾的所有元素,请执行以下操作:

foreach my $city (@fields[3..$#fields])
{
   #do stuff
}

(注意,根据您的问题,我假设您使用的是从零开始的索引。因此“元素 3”是第 4 个元素)。

或者,考虑Text::CSV阅读您的 CSV 文件,特别是如果您有转义分隔符之类的内容。

于 2013-03-15T13:59:07.247 回答
1

好吧,如果您的行被读入数组,您可以通过在标量上下文中评估它来获取数组中元素的数量,例如

my $elems = @line;

或者确定

my $elems = scalar(@line);

尽管在这种情况下scalar是多余的,但它对于强制标量上下文很方便,否则它会是列表上下文。您还可以使用 找到数组最后一个元素的索引$#line

之后,如果您想从元素 3 开始获取所有内容,您可以使用数组切片:

my @threeonwards = @line[3 .. $#line];
于 2013-03-15T14:00:29.343 回答