2013年8月2日金曜日

開発環境

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

その他参考書籍

4.

コード(BBEdit)

sample.pl

#!/usr/bin/env perl
## Copyright (C) 2013 by kamimura
use strict;
use warnings;
use 5.016;
use utf8;
binmode STDOUT, ':utf8';
binmode STDIN, ':utf8';

$^I = ".bak";

while (<>) {
    if (/^#!/) {
        $_ .= "## Copyright (C) 2013 by kamimura\n";
    }
    print;
}

入出力結果(Terminal)

$ cat sample.pl sample.py
#!/usr/bin/env perl
use strict;
use warnings;
use 5.016;
use utf8;
binmode STDOUT, ':utf8';
binmode STDIN, ':utf8';

$^I = ".bak";

while (<>) {
    if (/^#!/) {
        $_ .= "## Copyright (C) 2013 by kamimura\n";
    }
    print;
}
#!/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)
$ ./sample.pl sample.pl sample.py
$ cat sample.pl
#!/usr/bin/env perl
## Copyright (C) 2013 by kamimura
use strict;
use warnings;
use 5.016;
use utf8;
binmode STDOUT, ':utf8';
binmode STDIN, ':utf8';

$^I = ".bak";

while (<>) {
    if (/^#!/) {
        $_ .= "## Copyright (C) 2013 by kamimura\n";
    }
    print;
}
$ cat sample.py
#!/usr/bin/env python3.3
## Copyright (C) 2013 by kamimura
#-*- 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)
$ cat sample.pl.bak sample.py.bak
#!/usr/bin/env perl
use strict;
use warnings;
use 5.016;
use utf8;
binmode STDOUT, ':utf8';
binmode STDIN, ':utf8';

$^I = ".bak";

while (<>) {
    if (/^#!/) {
        $_ .= "## Copyright (C) 2013 by kamimura\n";
    }
    print;
}
#!/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)
$

ちなみにpython3.3の場合。

コード(BBEdit)

sample.py

#!/usr/bin/env python3.3
## Copyright (C) 2013 by kamimura
#-*- coding: utf-8 -*-

import os, re, sys

for filename in sys.argv[1:]:
    os.rename(filename, filename + ".bak")
    with open(filename + ".bak") as in_f:
        with open(filename, "w") as out_f:
            for line in in_f.readlines():
                if re.search(r"^#!", line):
                    line += "## Copyright (C) 2013 by kamimura\n"
                out_f.write(line)

入出力結果(Terminal)

$ cat sample.pl
#!/usr/bin/env perl
use strict;
use warnings;
use 5.016;
use utf8;
binmode STDOUT, ':utf8';
binmode STDIN, ':utf8';

$^I = ".bak";

while (<>) {
    if (/^#!/) {
        $_ .= "## Copyright (C) 2013 by kamimura\n";
    }
    print;
}
$ cat sample.py
#!/usr/bin/env python3.3
#-*- coding: utf-8 -*-

import os, re, sys

for filename in sys.argv[1:]:
    os.rename(filename, filename + ".bak")
    with open(filename + ".bak") as in_f:
        with open(filename, "w") as out_f:
            for line in in_f.readlines():
                if re.search(r"^#!", line):
                    line += "## Copyright (C) 2013 by kamimura\n"
                out_f.write(line)
$ ./sample.py sample.pl sample.py
$ cat sample.pl
#!/usr/bin/env perl
## Copyright (C) 2013 by kamimura
use strict;
use warnings;
use 5.016;
use utf8;
binmode STDOUT, ':utf8';
binmode STDIN, ':utf8';

$^I = ".bak";

while (<>) {
    if (/^#!/) {
        $_ .= "## Copyright (C) 2013 by kamimura\n";
    }
    print;
}
$ cat sample.py
#!/usr/bin/env python3.3
## Copyright (C) 2013 by kamimura
#-*- coding: utf-8 -*-

import os, re, sys

for filename in sys.argv[1:]:
    os.rename(filename, filename + ".bak")
    with open(filename + ".bak") as in_f:
        with open(filename, "w") as out_f:
            for line in in_f.readlines():
                if re.search(r"^#!", line):
                    line += "## Copyright (C) 2013 by kamimura\n"
                out_f.write(line)
$ cat sample.pl.bak
#!/usr/bin/env perl
use strict;
use warnings;
use 5.016;
use utf8;
binmode STDOUT, ':utf8';
binmode STDIN, ':utf8';

$^I = ".bak";

while (<>) {
    if (/^#!/) {
        $_ .= "## Copyright (C) 2013 by kamimura\n";
    }
    print;
}
$ cat sample.py.bak
#!/usr/bin/env python3.3
#-*- coding: utf-8 -*-

import os, re, sys

for filename in sys.argv[1:]:
    os.rename(filename, filename + ".bak")
    with open(filename + ".bak") as in_f:
        with open(filename, "w") as out_f:
            for line in in_f.readlines():
                if re.search(r"^#!", line):
                    line += "## Copyright (C) 2013 by kamimura\n"
                out_f.write(line)
$

0 コメント:

コメントを投稿