【问题标题】:Outputting a file from a perl script to be read by a bash script从 perl 脚本输出文件以供 bash 脚本读取
【发布时间】:2015-10-28 02:01:12
【问题描述】:

我有一个 shell 脚本,它调用 perl 脚本来操作一些数据。一旦 Perl 脚本完成,它应该关闭并返回 shell (bash) 脚本的数据文件,然后在函数中使用该文件。关闭文件后如何结束我的 perl 脚本?

举个简单的例子:

#!/usr/bin/environment perl

my $filename = shift @ARGV;

open(my $fh, '+<', $filename) or die "Couldn't Open File";
sort $fh;
close $fh;

编辑:所以,这里可能出了点问题。要排序的文件每行包含一个单词。如果这个脚本正常工作,我如何在 bash shell 中使用它的输出?我期望: perl sort.pl "$filename" > sorted.txt 将 sorted.txt 保存在磁盘上。

【问题讨论】:

  • 我认为你不需要在这里做任何特别的事情。 perl 脚本正在关闭文件。一旦返回,shell 脚本就可以使用该文件。
  • 您发布了一个 perl 脚本/程序(第一行 #!/usr/bin/environment perl)。也愿意分享 bash 脚本吗?。
  • 您需要从文件句柄中读取数据,对其进行排序,将其写入某个位置,然后将其关闭。但是为什么不使用sort 命令呢。让程序写入标准输出可能是最灵活的。
  • 您可以在 shell 脚本中使用 Unix/Linux 排序命令对文件进行排序。 Perl 的排序功能适用于数组/列表,而不适用于文件句柄。
  • 啊,好吧,菜鸟的错误。我看到以下内容,希望做类似的事情。 'perl -we '打印排序 ' input.txt > output.txt'

标签: bash perl


【解决方案1】:

Perl 中的sort 函数作用于列表,而不是文件句柄。您可以使用&lt;&gt; 运算符从文件句柄中读取。你还需要一些输出,所以print结果:

print sort <$fh>;

不过,如果您不在 Perl 脚本中做更多的事情,调用标准的 sort(通常是/usr/bin/sort)可能会更容易、更简洁、更高效。

【讨论】:

  • 啊,这就是我要找的。错过了。杰出的。完全按照我想要的方式工作。谢谢大家+。
猜你喜欢
  • 1970-01-01
  • 2020-06-18
  • 2017-11-21
  • 2014-10-26
  • 2012-07-23
  • 1970-01-01
  • 2019-08-03
  • 2016-04-19
  • 2011-05-26
相关资源
最近更新 更多