SlideShare une entreprise Scribd logo
1  sur  24
Télécharger pour lire hors ligne
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;
use warnings;
...
$ 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
こういう時こそ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 
A
B
C
$.変数
現在読んでいる行番号を保持する
$ 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オプション
$.変数
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
ありがとうございました

Contenu connexe

Tendances

Python Kyoto study LT
Python Kyoto study LTPython Kyoto study LT
Python Kyoto study LT
Naoya Inada
 
13.11.02 playgroundthon環境構築
13.11.02 playgroundthon環境構築13.11.02 playgroundthon環境構築
13.11.02 playgroundthon環境構築
Kei Nakazawa
 

Tendances (19)

Python Kyoto study LT
Python Kyoto study LTPython Kyoto study LT
Python Kyoto study LT
 
Groovy Bootcamp 2015 by JGGUG
Groovy Bootcamp 2015 by JGGUGGroovy Bootcamp 2015 by JGGUG
Groovy Bootcamp 2015 by JGGUG
 
GroovyServ concept, how to use and outline.
GroovyServ concept, how to use and outline.GroovyServ concept, how to use and outline.
GroovyServ concept, how to use and outline.
 
GPD WINでStretchを動かす
GPD WINでStretchを動かすGPD WINでStretchを動かす
GPD WINでStretchを動かす
 
Pythonでゲーム作る
Pythonでゲーム作るPythonでゲーム作る
Pythonでゲーム作る
 
Groovy Shell Scripting 2015
Groovy Shell Scripting 2015Groovy Shell Scripting 2015
Groovy Shell Scripting 2015
 
ServerWorks Sonic! 003 LT - GlusterをZabbixで監視してみた
ServerWorks Sonic! 003 LT - GlusterをZabbixで監視してみたServerWorks Sonic! 003 LT - GlusterをZabbixで監視してみた
ServerWorks Sonic! 003 LT - GlusterをZabbixで監視してみた
 
密着!わたしのコンソールアプリ開発環境
密着!わたしのコンソールアプリ開発環境密着!わたしのコンソールアプリ開発環境
密着!わたしのコンソールアプリ開発環境
 
13.11.02 playgroundthon環境構築
13.11.02 playgroundthon環境構築13.11.02 playgroundthon環境構築
13.11.02 playgroundthon環境構築
 
台湾MOPCON2015に初参加してみた I tried the first time participate in the Taiwan MOPCON2...
台湾MOPCON2015に初参加してみた I tried the first time participate in the Taiwan MOPCON2...台湾MOPCON2015に初参加してみた I tried the first time participate in the Taiwan MOPCON2...
台湾MOPCON2015に初参加してみた I tried the first time participate in the Taiwan MOPCON2...
 
some topic of ffmpeg
some topic of ffmpeg some topic of ffmpeg
some topic of ffmpeg
 
Intel graphics
Intel graphicsIntel graphics
Intel graphics
 
Pythonのシグナル処理
Pythonのシグナル処理Pythonのシグナル処理
Pythonのシグナル処理
 
OSCによるソフトウェア連携
OSCによるソフトウェア連携�OSCによるソフトウェア連携�
OSCによるソフトウェア連携
 
CSRを自動生成する!
CSRを自動生成する!CSRを自動生成する!
CSRを自動生成する!
 
SmalltalkBoltでUFFI入門
SmalltalkBoltでUFFI入門SmalltalkBoltでUFFI入門
SmalltalkBoltでUFFI入門
 
Read Groovy Compile process(Groovy Benkyoukai 2013)
Read Groovy Compile process(Groovy Benkyoukai 2013)Read Groovy Compile process(Groovy Benkyoukai 2013)
Read Groovy Compile process(Groovy Benkyoukai 2013)
 
G* Workshop in fukuoka 20120901
G* Workshop in fukuoka 20120901G* Workshop in fukuoka 20120901
G* Workshop in fukuoka 20120901
 
Hudson using Groovy #jggug
Hudson using Groovy  #jggugHudson using Groovy  #jggug
Hudson using Groovy #jggug
 

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

Djangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込むDjangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込む
2bo 2bo
 
Python開発環境三種の神器
Python開発環境三種の神器Python開発環境三種の神器
Python開発環境三種の神器
Yukitaka Uchikoshi
 
Cent osにpyhtonをインストールしてみよう
Cent osにpyhtonをインストールしてみようCent osにpyhtonをインストールしてみよう
Cent osにpyhtonをインストールしてみよう
2bo 2bo
 
Nseg20120825
Nseg20120825Nseg20120825
Nseg20120825
hiro345
 
Distutil setuptools distribute
Distutil setuptools distributeDistutil setuptools distribute
Distutil setuptools distribute
Atsushi Odagiri
 
Git pyfes201207-presen
Git pyfes201207-presenGit pyfes201207-presen
Git pyfes201207-presen
Kouhei Maeda
 
griffon plugin を 実際に作ってみよう #jggug
griffon plugin を 実際に作ってみよう #jgguggriffon plugin を 実際に作ってみよう #jggug
griffon plugin を 実際に作ってみよう #jggug
kimukou_26 Kimukou
 

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

Djangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込むDjangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込む
 
Python開発環境三種の神器
Python開発環境三種の神器Python開発環境三種の神器
Python開発環境三種の神器
 
「Python言語」はじめの一歩 / First step of Python
「Python言語」はじめの一歩 / First step of Python「Python言語」はじめの一歩 / First step of Python
「Python言語」はじめの一歩 / First step of Python
 
How to run P4 BMv2
How to run P4 BMv2How to run P4 BMv2
How to run P4 BMv2
 
2017年05月27日 AITCシニア技術者勉強会 第6回「OpenCV入門」
2017年05月27日 AITCシニア技術者勉強会 第6回「OpenCV入門」2017年05月27日 AITCシニア技術者勉強会 第6回「OpenCV入門」
2017年05月27日 AITCシニア技術者勉強会 第6回「OpenCV入門」
 
今時のDev opsの取り組み事例集
今時のDev opsの取り組み事例集今時のDev opsの取り組み事例集
今時のDev opsの取り組み事例集
 
LibreOffice を Windows 上でビルドする UPDATE
LibreOffice を Windows 上でビルドする UPDATELibreOffice を Windows 上でビルドする UPDATE
LibreOffice を Windows 上でビルドする UPDATE
 
Cent osにpyhtonをインストールしてみよう
Cent osにpyhtonをインストールしてみようCent osにpyhtonをインストールしてみよう
Cent osにpyhtonをインストールしてみよう
 
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
 
CloudFoundry 2 on Apache CloudStack 4.2.1
CloudFoundry 2 on Apache CloudStack 4.2.1CloudFoundry 2 on Apache CloudStack 4.2.1
CloudFoundry 2 on Apache CloudStack 4.2.1
 
RgGen ご紹介
RgGen ご紹介RgGen ご紹介
RgGen ご紹介
 
Nseg20120825
Nseg20120825Nseg20120825
Nseg20120825
 
Code igniterでテスト駆動開発 資料作成中
Code igniterでテスト駆動開発 資料作成中Code igniterでテスト駆動開発 資料作成中
Code igniterでテスト駆動開発 資料作成中
 
Distutil setuptools distribute
Distutil setuptools distributeDistutil setuptools distribute
Distutil setuptools distribute
 
Git pyfes201207-presen
Git pyfes201207-presenGit pyfes201207-presen
Git pyfes201207-presen
 
PyQtではじめるGUIプログラミング
PyQtではじめるGUIプログラミングPyQtではじめるGUIプログラミング
PyQtではじめるGUIプログラミング
 
Infinite Debian - Platform for mass-producing system every second
Infinite Debian - Platform for mass-producing system every secondInfinite Debian - Platform for mass-producing system every second
Infinite Debian - Platform for mass-producing system every second
 
griffon plugin を 実際に作ってみよう #jggug
griffon plugin を 実際に作ってみよう #jgguggriffon plugin を 実際に作ってみよう #jggug
griffon plugin を 実際に作ってみよう #jggug
 
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
 
WSL2+docker+JupyterとVS Codeリモート環境の構築
WSL2+docker+JupyterとVS Codeリモート環境の構築WSL2+docker+JupyterとVS Codeリモート環境の構築
WSL2+docker+JupyterとVS Codeリモート環境の構築
 

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