可能是一个非常简单的问题: 我有一个perl文件sed.perl
,它将一个字符串作为输入,在那里进行一些替换并将其输出到标准输出中。如何在终端管道中运行perl文件
#!/usr/bin/perl
use warnings;
use strict;
use diagnostics;
use feature 'say';
#use Cwd;
my ($text) = @ARGV;
$text =~ s/\.\)\n/'\.'\)\n/;
print $text;
我想从终端管道输出字符串喂脚本。让我们这样说:
cat input.txt | perl sed.perl
但这不起作用:Use of uninitialized value $text in substitution (s///) at
使用分数符号不工作之一:
cat input.txt | perl sed.perl -
你想补充一点,它的更好风格使用'<>'而不是'':脚本的用户可以通过'<>''''作为参数传递输入来自的文件的名称,这对于Unix实用程序来说是一种常见而有用的约定跟随。 –
reinierpost
好点 - 修改后。 – Sobrique
'\ n'会匹配(除非您使用-l与-n或-p) – ysth