如何将整个文件传递给perl脚本?

时间:2013-03-30 20:45:17

标签: perl stdin

我想要一个接收文件的Perl脚本并根据它进行一些计算。

这是我的尝试:

Perl.pl

#!/usr/bin/perl

use strict;
use warnings;

my $book = <STDIN>;

print $book;

这是我执行的脚本:

./Perl.pl < textFile

我的脚本只打印textFile的第一行。我可以将所有textFile加载到我的变量$ book中吗?

我想以这种方式传递文件,我不想使用Perl的open(...)

3 个答案:

答案 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常见问题解答中。

How can I read in an entire file all at once?

相关问题