2013年8月1日木曜日

開発環境

『初めてのPerl 第6版』(Randal L. Schwartz, Tom Phoenix, brian d foy 共著、近藤 嘉雪 訳、オライリー・ジャパン、2012年、ISBN978-4-87311-567-2)の9章(正規表現によるテキスト処理)の9.6(練習問題)2を解いてみる。

その他参考書籍

2.

コード(BBEdit)

sample.pl

#!/usr/bin/env perl
use strict;
use warnings;
use 5.016;
use utf8;
binmode STDOUT, ':utf8';
binmode STDIN, ':utf8';

my $filename = $ARGV[0];

die unless defined $filename;

my $out = $filename;
$out =~ s/(\.\w+)?$/.out/;

open my $in_fh, "<", $filename or die "cant't open $filename: $!";
open my $out_fh, ">", $out or die "can't open $out: $!";

while (<$in_fh>) {
    s/fred/Larry/ig;
    print $out_fh $_;
}

入出力結果(Terminal)

$ cat tmp.txt
Manfred Mann
fredfred
fredFred
FREDFRED
Larry
$ ./sample.pl tmp.txt
$ cat tmp.out
ManLarry Mann
LarryLarry
LarryLarry
LarryLarry
Larry
$

ちなみにpython3.3の場合。

コード(BBEdit)

sample.py

#!/usr/bin/env python3.3
#-*- coding: utf-8 -*-

import re, sys

try:
    filename = sys.argv[1]
    out = re.sub("(\.\w+)?$", ".out", filename)
    with open(filename) as in_f:
        with open(out, "w") as out_f:
            out_f.write(re.sub("fred", "Larry", in_f.read(), flags=re.I))
except Exception as err:
    print(type(err), err)

入出力結果(Terminal)

$ cat tmp.txt
Manfred Mann
fredfred
fredFred
FREDFRED
Larry
$ ./sample.py tmp.txt
$ cat tmp.out
ManLarry Mann
LarryLarry
LarryLarry
LarryLarry
Larry
$

0 コメント:

コメントを投稿