从bash到perl脚本的STDIN
我有一个perl脚本myscript.pl从bash到perl脚本的STDIN,perl,bash,Perl,Bash,我有一个perl脚本myscript.pl use strict; use IO::Handle; open OUTPUT, '>', "output.txt" or die $!; STDOUT->fdopen( \*OUTPUT, 'w' ) or die $!; while (<STDIN>){ print $_; } 我可以将$$中的内容粘贴到/tmp/msg中 我需要使用来自bash脚本的stdin运行perl脚本 有可能吗?怎么可能 我试过了,尽管我知
use strict;
use IO::Handle;
open OUTPUT, '>', "output.txt" or die $!;
STDOUT->fdopen( \*OUTPUT, 'w' ) or die $!;
while (<STDIN>){
print $_;
}
我可以将$$中的内容粘贴到/tmp/msg中
我需要使用来自bash脚本的stdin运行perl脚本
有可能吗?怎么可能
我试过了,尽管我知道这太傻了
cat in.$$> ./myscript.pl
in.$$> ./myscript.pl
in.$$> perl myscript.pl
要将文件内容指定为bash命令的标准输入,请在Perl脚本中使用,使用菱形运算符(也称为空文件句柄): null filehandle很特别:它可以用来模拟sed和awk的行为,以及任何其他接受文件名列表的Unix过滤程序,对所有文件名的每一行输入都执行相同的操作。来自的输入来自标准输入或命令行上列出的每个文件。它的工作原理如下:第一次求值时,会检查@ARGV数组,如果它为空,$ARGV[0]设置为-,打开时会提供标准输入。然后将@ARGV数组作为文件名列表进行处理 下面是一个例子:
#! /usr/bin/perl
# cat command emulator
while ( my $line = <> ) {
chomp $line;
say $line;
}
将获取命令行上列出的每个文件,按顺序打开它们,然后读取每一行,或从STDIN中提取行
您也可以这样做:
while ( my $line = <STDIN> ) {
chomp $line;
say $line;
}
它将从STDIN中读取行,但不会从命令行读取文件。我可能误解了它,但是,./myscript.pl in.$$如何?
cat in.$$ | ./myscript.pl
echo foo | ./myscript.pl
#! /usr/bin/perl
# cat command emulator
while ( my $line = <> ) {
chomp $line;
say $line;
}
while ( my $line = <STDIN> ) {
chomp $line;
say $line;
}