開発環境
- OS X Lion - Apple(OS)
- BBEdit - Bare Bones Software, Inc., Emacs(Text Editor)
- プログラミング言語: Perl
『初めてのPerl 第6版』(Randal L. Schwartz, Tom Phoenix, brian d foy 共著、近藤 嘉雪 訳、オライリー・ジャパン、2012年、ISBN978-4-87311-567-2)の9章(正規表現によるテキスト処理)の9.6(練習問題)5を解いてみる。
その他参考書籍
5.
コード(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';
my %files;
for (@ARGV) {
$files{$_} = 1;
}
while (<>) {
if (/^## Copyright/) {
delete $files{$ARGV};
}
}
@ARGV = keys %files;
$^I = ".bak";
while (<>) {
if (/^#!/) {
$_ .= "## Copyright (C) 2013 by kamimura\n";
}
print;
}
入出力結果(Terminal)
$ cat sample.pl
#!/usr/bin/env perl
use strict;
use warnings;
use 5.016;
use utf8;
binmode STDOUT, ':utf8';
binmode STDIN, ':utf8';
my %files;
for (@ARGV) {
$files{$_} = 1;
}
while (<>) {
if (/^## Copyright/) {
delete $files{$ARGV};
}
}
@ARGV = sort keys %files;
$^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)
$ ./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';
my %files;
for (@ARGV) {
$files{$_} = 1;
}
while (<>) {
if (/^## Copyright/) {
delete $files{$ARGV};
}
}
@ARGV = sort keys %files;
$^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';
my %files;
for (@ARGV) {
$files{$_} = 1;
}
while (<>) {
if (/^## Copyright/) {
delete $files{$ARGV};
}
}
@ARGV = sort keys %files;
$^I = ".bak";
while (<>) {
if (/^#!/) {
$_ .= "## Copyright (C) 2013 by kamimura\n";
}
print;
}
$ cat sample.py.bak
cat: sample.py.bak: No such file or directory
$
ちなみに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';
my %files;
for (@ARGV) {
$files{$_} = 1;
}
while (<>) {
if (/^## Copyright/) {
delete $files{$ARGV};
}
}
@ARGV = sort keys %files;
$^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
filenames = []
for filename in sys.argv[1:]:
with open(filename) as f:
for line in f.readlines():
if re.search("^## Copyright", line):
break
else:
filenames.append(filename)
for filename in filenames:
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';
my %files;
for (@ARGV) {
$files{$_} = 1;
}
while (<>) {
if (/^## Copyright/) {
delete $files{$ARGV};
}
}
@ARGV = sort keys %files;
$^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
filenames = []
for filename in sys.argv[1:]:
with open(filename) as f:
for line in f.readlines():
if re.search("^## Copyright", line):
break
else:
filenames.append(filename)
for filename in filenames:
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';
my %files;
for (@ARGV) {
$files{$_} = 1;
}
while (<>) {
if (/^## Copyright/) {
delete $files{$ARGV};
}
}
@ARGV = sort keys %files;
$^I = ".bak";
while (<>) {
if (/^#!/) {
$_ .= "## Copyright (C) 2013 by kamimura\n";
}
print;
}
$ cat sample.py.bak
cat: sample.py.bak: No such file or directory
$
0 コメント:
コメントを投稿