perlワンライナーで全てのモジュールにuse v5.8.0つける!

Post on 11-Aug-2015

141 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Perlワンライナーで全てのモジュールにuse v5.8.0つける!

(対象Perl Lv.2-3)

2014-12-22

伊藤俊夫 (debug-ito)

自己紹介伊藤俊夫東芝 研究開発センターネットワークシステムラボラトリ

id:debug-itoCPAN: toshioito

宣伝

Gnuplot::Builder 0.27 is released!

本題

_人人人人人人人人人人人人人人人人人人_> use v5.8.0つけといた方がいいよ! < ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^ ̄

やりたいことBefore

package BusyBird;use strict;use warnings;...

Afterpackage BusyBird;use v5.8.0;  ## <= コレuse strict;use warnings;...

$ find lib ­name "*.pm"lib/BusyBird/Watcher/Aggregator.pmlib/BusyBird/StatusStorage/SQLite.pmlib/BusyBird/StatusStorage/Common.pmlib/BusyBird/StatusStorage/Memory.pmlib/BusyBird/Log.pmlib/BusyBird/Timeline.pmlib/BusyBird/Main.pmlib/BusyBird/Watcher.pmlib/BusyBird/Test/StatusStorage.pmlib/BusyBird/Input/Generator.pmlib/BusyBird/Util.pmlib/BusyBird/SafeData.pmlib/BusyBird/Main/PSGI.pmlib/BusyBird/Main/PSGI/View.pmlib/BusyBird/Filter/Twitter.pmlib/BusyBird/StatusStorage.pmlib/BusyBird/Flow.pm

こういう時こそPerlワンライナー

とりあえず一つのファイルを相手にする

$ perl ­pi \  ­e '$_ .= "use v5.8.0;\n" if $. == 1' \  lib/BusyBird.pm

全ファイルに処理を適用する$ find lib ­name "*.pm" ­exec \  perl ­pi \  ­e '$_ .= "use v5.8.0;\n" if $. == 1' \  {} \;

­eオプション引数をPerlスクリプトとして実行

$ perl ­e 'print "Hello, World!\n"'Hello, World!

­pオプション入力ファイルの各行を繰り返し処理各行が$_として入力される処理後に$_を出力する

$ cat sample.txt ABC$ perl ­pe '$_ = "> $_"' sample.txt > A> B> C

­iオプション入力ファイルを出力結果で書き換える

$ perl ­i ­pe '$_ = "> $_"' sample.txt $ cat sample.txt > A> B> C

­i[extension]元ファイルを別名で残す

$ perl ­i.orig ­pe '$_ = "> $_"' sample.txt $ cat sample.txt> A> B> C$ cat sample.txt.orig ABC

$.変数現在読んでいる行番号を保持する

$ perl ­pe '$_ = "$.: $_"' sample.txt 1: A2: B3: C

$ perl ­pi \  ­e '$_ .= "use v5.8.0;\n" if $. == 1' \  lib/BusyBird.pm

「1行目にuse v5.8.0;をくっつけて、他は素通し」­eオプション­pオプション­iオプション$.変数statement modifier (後置if)

便利ですね!

参考man perlrun­E: ­e かつ use feature­M: モジュールの使用­m: ­M ただし import無し­n: ­p ただし print無し­a: 入力のカラム分割­F: カラムセパレータ­l: chomp かつ $\ = $/­C: UTF-8入出力

man perlvar@F: ­a使用時の各カラム$ARGV: 現在<>で読込中のファイル名ARGVOUT: ­iオプションで現在の出力先のファイルハンドル

余談­iオプションを­pや­nをつけずに使うとどうなるのか?

→ やらない方がいいです

http://qiita.com/debug-ito/items/4847ef0827a8d2902469

ありがとうございました

top related