2017-05-16 12 views
-1

まず、Perlを初めて使ったので、ファイルから文字列を削除する必要があります。Perlスクリプトでコマンドを実行することができません

コードは、私が持っている:私は、私はあなたが私を助けることを願っていただきました!間違って見つけるカント

syntax error at nfs_test.sh line 9, near "pli -e " 
Execution of nfs_test.sh aborted due to compilation errors. 

#!/usr/bin/perl -w 

use warnings; 
use strict; 

my $server_a = 'xxx.test.ch'; 

print "$server_a\n"; 
perl -pli -e "s/$server_a//" '/Users/user/Downloads/exports'; 

私はこのスクリプトを実行すると、私はこのエラーを取得します。

+0

perlファイルでperlを呼び出していますか? – Jens

+0

私はそれが間違いだと思ったが、私はそれを解決する方法を知らない。 – Damon

+0

ここで何をしようとしている? – Jens

答えて

3
#! /usr/bin/perl 
use warnings; 
use strict; 

@ARGV = '/Users/user/Downloads/exports'; 
$^I = '~'; 

my $server_a = quotemeta 'xxx.test.ch'; 
s/$server_a//, print while <>; 

@ARGV配列には引数が含まれており、ダイヤモンド演算子によって反復されます。

$^Iは、-iオプションに相当します。

サーバ名にドットで改行を意味するものではないので、おそらくquotemetaが必要です。

+0

私はそれを試してそれを台無しにする前に、私はあなたのことを理解しようとします。だから、基本的にxxx.test.chを含んでいないすべての行は同じままですが、xxx.test.chを含むすべての行は削除されますか? – Damon

+0

"-sec = lala.test.ch:tutu.test.ch:xxx.test.ch:gege.test.ch"が含まれている場合はどうなりますか? – Damon

+0

@Damon:元のコードのように置換を使用することで修正されました。 – choroba

関連する問題