【发布时间】:2018-02-03 22:59:06
【问题描述】:
我可能错过了一些东西,因为我今天开始使用 Perl,所以如果这很明显,请原谅。
我想从文件中加载字符串,然后逐个字符地拆分它。 我做了以下
use strict;
open my $fh, "<", "hello.txt" || die "Cannot open file!\n";
my $data = do { local $/ ; <$fh>};
print $data;
print join( ', ',(split( //, $data)));
close $fh;
当我执行这个脚本时,第一个打印语句打印 $data 没有问题,但是第二个打印只打印连接字符串。
Hello, world!
,
我在装有 Strawberry Perl 的 Windows 7 机器上运行,目前我无法访问 Unix/Linux 机器,因此无法在其他地方进行测试。
【问题讨论】:
-
提示:由于您在块内读取文件,因此也将其打开。这很好地包含(范围)
$fh到该块,并将所有相关代码拉到一起。所以,my $data = do { local $/; open my $fh ...; <$fh> };文件 is 在代码退出块时关闭,$fh不再存在。 -
有点题外话,但可以使用例如 VMware Player 和 Ubuntu 映像来运行 Linux,而在 Windows 中仍然可以运行。
-
我会,但我现在有点懒惰设置它:)。