24
Perl ワンライナーで 全てのモジュールに use v5.8.0 つける! ( 対象Perl Lv.2-3) 2014-12-22 伊藤俊夫 (debug-ito)

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

Embed Size (px)

Citation preview

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

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

(対象Perl Lv.2-3)

2014-12-22

伊藤俊夫 (debug-ito)

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

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

id:debug-itoCPAN: toshioito

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

宣伝

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

Gnuplot::Builder 0.27 is released!

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

本題

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

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

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

やりたいことBefore

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

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

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

$ 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

便利ですね!

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

参考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オプションで現在の出力先のファイルハンドル

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

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

→ やらない方がいいです

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

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

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

ありがとうございました