Perlによるコマンドラインツール開発Tips
TIME rest time current/total
TopicsPlaceHolder

Perlによるコマンドラインツール開発Tips

perl casual #6

Oct 24th, 2014

Profile

songmu

Perlによるコマンドラインツール

何故Perlなのか

スクリプトを書くまでも無い例

書くときのアプローチ

ペラっと書くときの便利標準モジュール

モジュール構成で書く場合はpmファイルに寄せる

use strict;
use warnings;
use MyApp::ClI;
MyApp::CLI->run(@ARGV)

引数が空の場合を検知する

use Term::ReadKey;
use Getopt::Long;
GetOptions(\my %opt, qw/
    password|p:s
/);
die 'password required' unless exists $opt{password};
if ($opt{password} eq '') {
    ReadMode 'noecho';
    print 'Enter password: ';
    chomp ($opt{password} = ReadLine);
}
print "your password: $opt{password}\n";

入力がパイプ経由かどうかを知る

if (-p STDIN) {
    print while <>;
}
else {
    die 'Standard input must be passed on through the pipe';
}

インストール方法

Minillaとかでモジュール作って、script/以下にスクリプトファイル置くとそれを自動的にインストールしてくれる

単一ファイルにしたいとき

ベタにスクリプトファイルを書く場合のテスト

% cat say-ya.pl
main() unless caller;
sub main {
    print ya() . "\n";
}
sub ya {
    return 'YA';
}

% cat t/main.pl
use Test::More;
require 'say-ya.pl'; # main()は動かない
is ya(), 'YA';

App::FatPacker

% fatpack pack hoge.pl > hoge-packed.pl

以上

We are hiring