12
--
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
--
>>
<<
--
calendar_bottom
RSS | ATOM | ADMIN

badulog

日々の覚書と雑記
ENTRY TOP
スポンサーサイト

一定期間更新がないため広告を表示しています

スポンサードリンク | - | - | - | - |
ENTRY BOTTOM ENTRY TOP
[perl] 出力のバッファリング
 perlのprintはデフォルト、バッファリングする模様。
嫌ならsyswriteを使えとのこと。

syswrite FOUT,$data,length($data);

↑が基本、
もう一個第4パラにオフセットも指定できて、
途中からも出せる。


baduizm | perl | - | - | - |
ENTRY BOTTOM ENTRY TOP
[perl] 特殊変数
baduizm | perl | - | - | - |
ENTRY BOTTOM ENTRY TOP
[perl] perlワンライナーその2
単純だけど便利だ

ここから

[数値変換]
入力された10進数を16進数に変換して表示します。CTRL-Cで終了
perl -ne 'printf "%x¥n",$_'

入力された10進数を8進数に変換して表示します。CTRL-Cで終了
perl -ne 'printf "%o¥n",$_'

入力された16進数を10進数に変換して表示します。CTRL-Cで終了
perl -ne 'print hex($_)."¥n"'

入力された8進数を10進数に変換して表示します。CTRL-Cで終了
perl -ne 'print oct($_)."¥n"'

簡易電卓として計算できます。CTRL-Cで終了
perl -ne 'print eval($_)."¥n"'
baduizm | perl | - | - | - |
ENTRY BOTTOM ENTRY TOP
[perl] print if /^START$/ .. /^END$/
便利そうなので。

ここから

こんな感じで
perl -ne 'print if /^START$/ .. /^END$/' stend.txt

やると対象ファイルのSTART行からEND行までprintする。
もちろんunlessにして逆のことも可能。

The Perl5 Manual - 範囲演算子

スカラコンテキストで使われたときには、".." はブール値を返します。この演 算子は、フリップフロップのように 2 値安定で、sed や awk や多くのエディタ での行範囲 (コンマ) 演算子をエミュレートするものとなります。


baduizm | perl | - | - | - |
ENTRY BOTTOM ENTRY TOP
[perl] perlワンライナー その1

◇ワンライナーで使えるオプション◇

http://www.stackasterisk.jp/tech/program/perl04_04.jsp


■ -n オプション、-p オプション:
与えたプログラムの外側にループがあるのと同じような動作をする。
-p は"print $_"がついている感じ
while(<>) {
....
print $_;
}


■ -l オプション
-p や -n オプションのループブロック内の最初でchompされる

■ -i オプション
対象のファイルを変更してしまえる。-i.bakとするとxxx.bakというバックアップまでも作ってくれる。
perl -p -i.bak -e 's/¥bfoo¥b/bar/g' *.c


とりあえずここまで。
perl -lane とかが手癖になるのかな。tar xvzfのように。

baduizm | perl | - | - | - |
ENTRY BOTTOM ENTRY TOP
[perl] 無名ハッシュのリファレンス
ハッシュ(連想配列)の配列を作りたくてあれこれ。
ざっくりしらべたところ
・perlには多次元配列という概念がない
・perlにはサブルーチンに渡す引数はスカラー(のリスト)と決まっている
# sub(@list1,@list2)としても合体した一つのリストと見なすとか。
ような記述が見受けられた。。

で、リファレンス。要はアドレス渡し。
$ref = ¥@list
みたいに、バックスラでそのリファレンスをスカラに代入できるみたい。

今回は、無名ハッシュのリファレンスを作成した。
ようは↑みたいに、先に@listという名前の配列を作ること無く、
いきなり(とある)ハッシュのリファレンスを作る。
## 無名ハッシュのリファレンス
$srvb = {
mid => $mid,
host => $host,
ip => $ip
};

こうすれば、↓のようにハッシュの配列を作れる

## @srvblist: ハッシュ(のリファレンス)のリスト
push ( @srvblist,$srvb);


- 以上 -
baduizm | perl | - | - | - |
ENTRY BOTTOM