Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Perlワンライナーで
全てのモジュールに
use v5.8.0つける!
(対象Perl Lv.2-3)
2014-12-22
伊藤俊夫 (debug-ito)
自己紹介
伊藤俊夫
東芝 研究開発センター
ネットワークシステムラボラトリ
id:debug-ito
CPAN: 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;
...
After
package BusyBird;
use v5.8.0;  ## <= コレ
use strict;
us...
$ find lib ­name "*.pm"
lib/BusyBird/Watcher/Aggregator.pm
lib/BusyBird/StatusStorage/SQLite.pm
lib/BusyBird/StatusStorage...
こういう時こそ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 
A
B
C
$ 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 ...
$.変数
現在読んでいる行番号を保持する
$ perl ­pe '$_ = "$.: $_"' sample.txt 
1: A
2: B
3: C
$ perl ­pi 
  ­e '$_ .= "use v5.8.0;n" if $. == 1' 
  lib/BusyBird.pm
「1行目にuse v5.8.0;をくっつけて、他は素通し」
­eオプション
­pオプション
­iオプショ...
便利ですね!
参考
man perlrun
­E: ­e かつ use feature
­M: モジュールの使用
­m: ­M ただし import無し
­n: ­p ただし print無し
­a: 入力のカラム分割
­F: カラムセパレータ
­l: cho...
余談
­iオプションを­pや­nをつけずに使うとどうなるのか?
→ やらない方がいいです
http://qiita.com/debug-ito/items/4847ef0827a8d2902469
ありがとうございました
Perlワンライナーで全てのモジュールにuse v5.8.0つける!
Upcoming SlideShare
Loading in …5
×

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

554 views

Published on

Perl Beginners #16

Published in: Technology
  • Be the first to comment

  • Be the first to like this

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

  1. 1. Perlワンライナーで 全てのモジュールに use v5.8.0つける! (対象Perl Lv.2-3) 2014-12-22 伊藤俊夫 (debug-ito)
  2. 2. 自己紹介 伊藤俊夫 東芝 研究開発センター ネットワークシステムラボラトリ id:debug-ito CPAN: toshioito
  3. 3. 宣伝
  4. 4. Gnuplot::Builder 0.27 is released!
  5. 5. 本題
  6. 6. _人人人人人人人人人人人人人人人人人人_ > use v5.8.0つけといた方がいいよ! <  ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^ ̄
  7. 7. やりたいこと Before package BusyBird; use strict; use warnings; ... After package BusyBird; use v5.8.0;  ## <= コレ use strict; use warnings; ...
  8. 8. $ find lib ­name "*.pm" lib/BusyBird/Watcher/Aggregator.pm lib/BusyBird/StatusStorage/SQLite.pm lib/BusyBird/StatusStorage/Common.pm lib/BusyBird/StatusStorage/Memory.pm lib/BusyBird/Log.pm lib/BusyBird/Timeline.pm lib/BusyBird/Main.pm lib/BusyBird/Watcher.pm lib/BusyBird/Test/StatusStorage.pm lib/BusyBird/Input/Generator.pm lib/BusyBird/Util.pm lib/BusyBird/SafeData.pm lib/BusyBird/Main/PSGI.pm lib/BusyBird/Main/PSGI/View.pm lib/BusyBird/Filter/Twitter.pm lib/BusyBird/StatusStorage.pm lib/BusyBird/Flow.pm
  9. 9. こういう時こそPerlワンライナ ー
  10. 10. とりあえず 一つのファイルを相手にする
  11. 11. $ perl ­pi    ­e '$_ .= "use v5.8.0;n" if $. == 1'    lib/BusyBird.pm
  12. 12. 全ファイルに処理を適用する $ find lib ­name "*.pm" ­exec    perl ­pi    ­e '$_ .= "use v5.8.0;n" if $. == 1'    {} ;
  13. 13. ­eオプション 引数をPerlスクリプトとして実行 $ perl ­e 'print "Hello, World!n"' Hello, World!
  14. 14. ­pオプション 入力ファイルの各行を繰り返し処理 各行が$_として入力される 処理後に$_を出力する $ cat sample.txt  A B C $ perl ­pe '$_ = "> $_"' sample.txt  > A > B > C
  15. 15. ­iオプション 入力ファイルを出力結果で書き換える $ perl ­i ­pe '$_ = "> $_"' sample.txt  $ cat sample.txt  > A > B > C
  16. 16. ­i[extension] 元ファイルを別名で残す $ perl ­i.orig ­pe '$_ = "> $_"' sample.txt  $ cat sample.txt > A > B > C $ cat sample.txt.orig  A B C
  17. 17. $.変数 現在読んでいる行番号を保持する $ perl ­pe '$_ = "$.: $_"' sample.txt  1: A 2: B 3: C
  18. 18. $ perl ­pi    ­e '$_ .= "use v5.8.0;n" if $. == 1'    lib/BusyBird.pm 「1行目にuse v5.8.0;をくっつけて、他は素通し」 ­eオプション ­pオプション ­iオプション $.変数 statement modifier (後置if)
  19. 19. 便利ですね!
  20. 20. 参考 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オプションで現在の出力先のファイルハンドル
  21. 21. 余談 ­iオプションを­pや­nをつけずに使うとどうなるのか? → やらない方がいいです
  22. 22. http://qiita.com/debug-ito/items/4847ef0827a8d2902469
  23. 23. ありがとうございました

×