[時間割:Perl]『ミニマルPerl』その3
2008/09/16 23:53 posted by kunkichi
月曜日は「Perl」です。今日はこれまで出てきた起動オプションをプログラムのタイプ別にまとめるところから。そのまま写しちゃうのはアレなので多少いじってみました。
オライリージャパン
売り上げランキング: 204732
| 一次オプションクラスタ | 用途 | 例 |
|---|---|---|
| -wl | 出力 | -wで警告表示はお決まりな感じ。-lで行末処理。# perl -wl -e 'print "Hello, World."' |
| -wnl | 入出力 | -nで入力処理のフィルタ。# echo "Hello,World." | ¥ |
| -wnla | フィールド処理(セパレータは空白文字) | -aで空白をセパレータとしたフィールド処理を指定。# echo "1 2 3" | ¥個々のフィールドは@Fに入る |
| -wnlaF’セパレータ文字列‘ | フィールド処理(セパレータは任意文字) | -aでフィールド処理を指定、そして-Fでセパレータ文字列を指定。awkっぽい。# echo "1,2,3" | ¥ |
| レコード定義クラスタ | 用途 | 例 |
| -00 | 段落モード | 段落ごとに番号をつけてみる。# cat sample.txtslapcatしたデータとかこれで処理すればよさげ。 |
| -0777 | ファイルモード | ファイルごとに番号をつけてみる。# cat sample2.txt |
| スイッチクラスタ | 用途 | 例 |
| -s | スイッチで引数による変数処理を追加 | 例えば-flagで変数$flagを有効化してみる# cat sample.pl実行すると以下。# ./sample.pl |
| モジュールクラスタ | 用途 | 例 |
| -M’モジュール名‘ | モジュールを有効化する。 | モジュールがインストールされているかの確認に使える。# Perl -M'Net::SMTP' -e ''何も出力されなければモジュールはインストールされている。エラーが出力されたら印すt−ルされていない。 |
| プログラムクラスタ | 用途 | 例 |
| -e ‘実行するPerlのコード‘ | コマンドラインから実行したいコードを書く。 | 略 |
上書き編集クラスタってのもあるのだけど、これはまだ出てきていないのでスルー。
でこれらをあらかじめエイリアスとして指定しておけばちょっと便利かも。
# cat .bashrc
alias perl_o=' perl -wl ' # 出力
alias perl_io=' perl -wnl ' # 入出力フィルタ
alias perl_iop=' perl -wpl ' # 入出力フィルタでprintを使う
alias perl_f=' perl -wnla ' # フィールド処理
alias perl_fp=' perl -wpla ' # フィールド処理でprintを使う
alias Perl_o=' perl -00 -wl ' # 段落モードで出力
alias Perl_io=' perl -00 -wnl ' # 段落モードで入出力フィルタ
alias Perl_iop=' perl -00 -wpl ' # 段落モードで入出力フィルタでprintを使う
alias Perl_f=' perl -00 -wnla ' # 段落モードでフィールド処理
alias Perl_fp=' perl -00 -wpla ' # 段落モードでフィールド処理でprintを使う
でもスクリプトではこうは行かないのである程度は覚えないと行けない、ということで順序。
ワンライナーの場合
# perl [スイッチクラスタ] [レコード定義クラスタ] [一次オプションクラスタ] [プログラムクラスタ]
スクリプトの場合
#!/usr/bin/perl [スイッチクラスタ] [レコード定義クラスタ] [一次オプションクラスタ]
〜以下コード〜
基本は一次オプションクラスタがあって、それにいろいろ追加した上で、コード部分を書くって言う流れになると。
こういうオプションを駆使した使い方はあんまりやったことなかったのだけど、僕の日常の作業だとオプションを指定せずに(-wTぐらいはつけます)ベタなスクリプトを書くよりも、こっちのほうが活躍する機会は多いかも。そのうちちょっと試してみよう。






コメント&トラックバック
トラックバックURL: