use strict;
use warnings;
use 5.020;
use autodie;
use Data::Dumper;
# Here, the variables $/, $^I, and @ARGV either have their default values
# or some other values that were set by code appearing here.
{
local $/ = ";"; #local => temporarily change the value of this variable until the closing parenthesis of this block is encountered
local $^I = ".bak";
local @ARGV = 'data.txt';
while (<>) {
my $perl_statement = $_;
$perl_statement =~ s/sql = .*/sql = Query1/xms ;
print $perl_statement; #This is redirected into the file.
}
} #Automatically restores the previous values for $/, $^I, and @ARGV.
$/
=>入力行セパレータ(デフォルト=>「を\ n ")。 <$INFILE>
は、1行で指定された文字までを読み込みます。
$^I
=>文字列(デフォルト=> undef)に設定すると、ダイアモンド演算子が魔法のになり、一見ファイルを編集することができます。すべての印刷ステートメントは、新しいファイルに書き込まれます。名前は元のファイルと同じになります。 $^I = ".bak"
と記述すると、元のファイルは元のファイル名に ".bak"という拡張子を加えたファイルに保存されます。空の文字列は、バックアップがないことを意味します。
@ARGV
=>ダイヤモンド演算子は、この配列のファイルから読み取ります。
サンプル実行:
~/pperl_programs$ cat data.txt
String sql="select * from "+
"emp_data";
hello word="select * from "+
"emp_data";
~/pperl_programs$ perl 1.pl
~/pperl_programs$ cat data.txt
String sql = Query1
hello word="select * from "+
"emp_data";
または、多分あなたは、パターンのすべての出現を置き換えたい:
use strict;
use warnings;
use 5.020;
use autodie;
use Data::Dumper;
my $pattern = q{"select * from "+
"emp_data"};
{
local $/ = ";";
local $^I = "";
local @ARGV = 'data.txt';
while (<>) {
my $perl_statement = $_;
$perl_statement =~ s/= \Q$pattern/ = Query1/xms;
print $perl_statement;
}
}
サンプル実行:
~/pperl_programs$ cat data.txt
String sql="select * from "+
"emp_data";
hello word="select * from "+
"emp_data";
~/pperl_programs$ perl 1.pl
~/pperl_programs$ cat data.txt
String sql = Query1;
hello word = Query1;
'/ gs'べき仕事 – rock321987
それはJava言語ですか? –