首页 > 解决方案 > 从 CSV 格式的单行文本文件中读取单行

问题描述

我正在尝试从包含三个用逗号分隔的数字的单行文本文件中读取一行。它会是这样的:

40045,47250,400

通过尝试我在网上找到的不同组合,我已经为此烦恼了几天。以下是我所拥有的:

open(my $fn, '<', 'prgcfg.txt' or die "Could not open configuration file: '$fn' $!");
my $line = <$fn>;
chomp $line; 
close $fn; 
my ($n,$e,$g) = split /,/,$line[1];

最后一行中的三个标量在此之上声明。无论我尝试什么,它总是会产生错误。有任何想法吗?

谢谢!

标签: perl

解决方案


假设您的错误和警告消息来自use strict; use warnings;,您可以通过以下更改消除它们:

use warnings;
use strict;

open my $fn, '<', 'prgcfg.txt' or die "Could not open configuration file $!";
my $line = <$fn>;
chomp $line; 
close $fn; 
my ($n,$e,$g) = split /,/, $line;

for 的括号open放错了;事实上,你根本不需要它们。

$fn是文件句柄,而不是文件名。不要尝试在die消息中打印句柄。

$line是一个标量;不要尝试像访问数组一样访问其中的元素。


推荐阅读