本連載では第一線の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を渡します.bashrcrrというエイリアスを設定しています。エイリアスとは、
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


