本連載では第一線のPerlハッカーが回替わりで執筆していきます。今回のハッカーは非エンジニアとして普段からプログラミング情報を発信しているnote103こと門松宏明さんで、
本稿のサンプルコードは、
簡単なツールで日々を効率化する
筆者は昨年までフリーランスの編集者として活動していましたが、
Perlは今なお時代とともに着実な進化を遂げていますが、
なお、
基礎構文でツールを作る
初めに紹介するのは、for
文、if
文などの初歩的な構文だけで作成したツールです。
作業の進捗を可視化する
筆者が以前に編集していた音楽全集
#!/usr/bin/env perl
use strict;
use warnings;
my $done = 0;
my $doing = 0;
my $todo = 0;
for (<DATA>) { ――(1)
if ($_ =~ /\A■/) { ┓
$done++; |
} |
elsif ($_ =~ /\A▲/) { |
$doing++; |(2)
} |
elsif ($_ =~ /\A□/) { |
$todo++; |
} |
} ┛
print "完了: $done, 作成中: $doing, 未着手: $todo\n";
__DATA__ ┓
■見出しA |
本文A |
|
▲見出しB |(3)
本文B |
|
□見出しC |
本文C |
(省略) ┛
このプログラムはfor
文、if
文、__
の組み合わせでできています。__
は、__
以降に置かれたテキストDATA
ファイルハンドルから読み出すことができます
このプログラムでは、for
文で下方へ流し、if
文と正規表現で受け止めて必要な処理を施しています
使い方
使い方はシンプルです。まず注釈が完成した見出しに■、__
以下にその注釈テキストをペーストして実行すると、
$ perl footnotes-counter.pl
完了: 17, 作成中: 4, 未着手: 87
このfor
文、if
文、__
の組み合わせは、
データの書式を変換する
前述の音楽全集では、
そこで、
1920 コルンゴルトのオペラ《死の都》初演
1920 ホルスト《惑星》全曲初演
1922 ヒンデミット《一九二二年》
1922 イベール《寄港地》
1923 ストラヴィンスキー《結婚》初演
1923 オネゲル《機関車パシフィック231》
1924 プッチーニ《トゥーランドット》(未完)
1924 レスピーギ《ローマの松》
1924 ガーシュウィン《ラプソディ・イン・ブルー》初演
しかし、
●1920年 コルンゴルトのオペラ《死の都》初演 ●ホルスト《惑星》全曲初演
●1922年 ヒンデミット《一九二二年》 ●イベール《寄港地》
●1923年 ストラヴィンスキー《結婚》初演 ●オネゲル《機関車パシフィック231》
●1924年 プッチーニ《トゥーランドット》(未完) ●レスピーギ《ローマの松》 ●ガーシュウィン《ラプソディ・イン・ブルー》初演
そこで、
my @data = <DATA>;
my $year;
my $buf_year = 0;
my $topic;
for (@data) {
if ($_ =~ /\A(\d+)\t(.+)/) {
$year = $1;
$topic = $2;
if ($year == $buf_year) {
print " ●$topic";
}
else {
print "\n●$year年 $topic";
}
$buf_year = $year;
}
}
__DATA__
1920 コルンゴルトのオペラ《死の都》初演
1920 ホルスト《惑星》全曲初演
(省略)
__
以下に管理用フォーマットにのっとった年表項目を入れて実行すると、
もしこの変換ツールがなければ、
ファイル名を簡便にリネームする
もう一つ、
通常、mv
コマンドを使いますが、bar.
をbaz.
にするように、r
をz
にしたいだけですから、copyrename.
です。
使い方
このツールでリネームを行う場合は、rname
を渡します.bashrc
rr
というエイリアスを設定しています。エイリアスとは、
alias rr='path/to/copy-rename.pl rname'
カレントディレクトリにはapple.
という名前のファイルが入っています。コードを実行すると、f
)
$ rr
f/d/a/q?
> f
すると、apple
のe
をf
にする場合はe f
と入力します。
ls:
file: apple.md
Put the words before & after
> e f
置換対象の指定が済むと、y
を入力し、
from: ┓
apple.md |
to: |(1)
applf.md ┛
Change OK? [y/N]
> y
ls:
file: applf.md
<続きの
本誌最新号をチェック!
WEB+DB PRESS Vol.130
2022年8月24日発売
B5判/168ページ
定価1,628円
(本体1,480円+税10%)
ISBN978-4-297-13000-8
- 特集1
イミュータブルデータモデルで始める
実践データモデリング
業務の複雑さをシンプルに表現! - 特集2
いまはじめるFlutter
iOS/Android両対応アプリを開発してみよう - 特集3
作って学ぶWeb3
ブロックチェーン、スマートコントラクト、NFT