Memoize

BasicWerk   EC Support   Technique   Facebook  

20140604225650_perl_subst_script

あんまりスマートなやり方ではないけれど、文字列置換スクリプト。

 

subst
 
#! /usr/bin/perl
use warnings;
use strict;
use Getopt::Long;
 
my $useage = 0;
my $i = 0;
my $g = 0;
GetOptions(
    'u' => \$useage,
    'i' => \$i,
    'g' => \$g,
);
 
if ($useage){
    print "subst pattern replacement file\n";
    exit;
}
 
my ($pattern, $replacement, $file) = @ARGV;
my $str = "";
open my $in, "<", $file;
while (my $line = <$in>){
    $str .= $line;
}
close $in;
 
if ($i and $g){
    $str =~ s/$pattern/$replacement/ig;
}
elsif ($i){
    $str =~ s/$pattern/$replacement/i;
}
elsif ($g){
    $str =~ s/$pattern/$replacement/g;
}
else {
    $str =~ s/$pattern/$replacement/;
}
 
print $str;
 

 

マルチラインモード、シングルラインモードを使いたいときは

 

 
subst '(?s)(?m)\A.+?aaa' 'AAA' file
 

 

みたいに使えばいいかなと。

 

スクリプトの中に /ms をベタ書きしちゃうのもありだと思う。

 


© Shin Nakamura/BasicWerk 2014