【问题标题】:Convert an excel file to txt and open in perl将excel文件转换为txt并在perl中打开
【发布时间】:2013-10-09 12:42:53
【问题描述】:

我有一个包含我的数据的 excel 文件。我将其保存为制表符分隔的 txt 文件。

但是如果我做一个简单的 perl 脚本:

open(IN, '<', 'myfile.txt') or die;
while (defined(my $line = <IN>)){
    print "$line\n";
}
close IN;

它只打印出一行,但它包含所有数据 - 仅在一行中 如果我使用另一个数据文件,没有问题,所以我认为将excel文件转换为txt文件有问题。

谁能帮帮我?

【问题讨论】:

  • 你在阅读之前设置$/吗?
  • 你能告诉我们输入文件吗?

标签: excel perl csv


【解决方案1】:

改用while (&lt;IN&gt;)。你的状态胜过了while魔法..

【讨论】:

  • 我不明白代码有什么问题,但我的问题是它将我的整个文件读取为一行-
  • 你确定每一行都以“\n”结尾吗?
【解决方案2】:

我将循环更改为:

while(my $line = <IN>) { ... }

没有必要使用defined()。

【讨论】:

  • 也许没有必要,但这并没有什么不同。你能帮我解决我的问题吗?
【解决方案3】:

我不确定这是否已经回答。但是,首先确保您的代码中包含以下内容:

use strict;
use warnings;

这将为您提供否则会收到的调试帮助。使用上述内容将为您提供更多有用的信息。

当我将您的打开命令放入我正在处理的当前程序中时,我收到了以下调试消息:

Name "main::IN" used only once: possible typo at ./test.pl line 37

您可能还想使用文件句柄,以便 Perl 可以记住去向。这是在 Perl 中打开文件的“新”方式,在线 perldoc 对此进行了说明。只需搜索“perl 文件句柄打开”。我学会了以这种方式打开我的公开赛:

open my $in '<', 'myfile.txt' or die;

然后,您可以运行以下命令:

while ( my $line = <$in> ) { ... }

如果您曾经被介绍过 Perl 的默认变量,那么有一个更好的方法可以做到这一点,但我认为您没有,所以上述解决方案可能是最好的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-23
    • 1970-01-01
    • 2016-12-26
    • 2019-10-28
    • 1970-01-01
    • 2012-11-04
    相关资源
    最近更新 更多