我想要一个接收文件的Perl脚本并根据它进行一些计算。
这是我的尝试:
Perl.pl
#!/usr/bin/perl
use strict;
use warnings;
my $book = <STDIN>;
print $book;
这是我执行的脚本:
./Perl.pl < textFile
我的脚本只打印textFile的第一行。我可以将所有textFile加载到我的变量$ book中吗?
我想以这种方式传递文件,我不想使用Perl的open(...)
答案 0 :(得分:4)
将文件句柄中的值分配给标量会一次拉一行。
你可以:
while
循环逐行追加行,直到没有留下或 $/
(至undef
)以更改脚本对构成线的构想。后者在perldoc perlvar中有一个例子(请阅读它,因为它解释了更改它的最佳实践)。答案 1 :(得分:1)
您也可以轻松使用Path::Class
。它是许多文件操作模块的包装器。
出于您的目的:
#! /usr/bin/perl
use Path::Class qw/file/;
my $file = file(shift @ARGV);
print $file->slurp;
您可以通过以下方式运行它:
./slurp.pl textFile
答案 2 :(得分:0)
您正在寻找的答案在Perl常见问题解答中。