perl の面白さ 2([ヒアドキュメント][バーナリデータ加工])

      2017/08/04

1)perl のヒアドキュメント
ヒアドキュメントの良さは、「出力イメージのまま書ける」所にある。
下記は、[google earth tour] データ作成用のscript である(自作)
「print OU << EOF;」 と「 EOF」に挟まれた部分が、変数展開され、そのままデータになる。 ------------------------------------------------------- print OU << EOF; 上手く表示されないので省略
EOF
——————————————————-
この機能で作った script は「グーグルアース、ツアーデータ」「サイトマップ」「アルバムデータ」等など、出力が帳票形式の物(html等)に適用できる。
2) perl で [バーナリデータ加工]
windows perl では、バーナリのデータを加工する時には、以下のようにしないと、windows に勝手に?行末に「改行?」を入れられてしまう。
—————————————-
open(IN,”< hogehoge.bin");binmode(IN); open(OU,"> hogehoge2.bin”);binmode(OU);
—————————————-

スポンサードリンク

ちょっと面倒だが、最近は苦にならなくなった。(苦笑)
後は、ネットワークデータ、エクセルデータ(ロータスのデータも)、文字コード変換、[exe]や[dll]ファイルの中身検索、等何でも?やった。
その割に成果はあまり出なかった。(笑)
ちょっとだけ?披露すると、バイナリデータは、データ毎に「パタン」が有るので、そこを素早く?理解する。。。
例を以下に書くが、基本的には[oct,hex,pack,unpack]の世界で、やっていることは、殆ど呪文?みたいなものだ。
# ———————————————————————
# セルのデータ数を読む
for(1..4) {$c0 = getc(IN);push(@a,$c0);}
$pat = unpack(“H*”,@a[0]);
$read = hex(unpack(“H*”,@a[2])) + (256 * hex(unpack(“H*”,@a[3])));
}
# セルのデータ解析を行う
for(1..$read) {$c0 = getc(IN);push(@b,$c0);}
$x = hex(unpack(“H*”,@b[1]))+(256*hex(unpack(“H*”,@b[2])));
$y = hex(unpack(“H*”,@b[3]))+(256*hex(unpack(“H*”,@b[4])));
}
# 数字(整数)
$line = join(”,@b[5..$#b-1]);
$d = hex(unpack(“H*”,@b[5]))+(256*hex(unpack(“H*”,@b[6])));
# 数字(小数)
$line = join(”,@b[5..$#b-1]);
$d_e = unpack(“d*”,$line);
# ———————————————————————
スポンサードリンク

 - ソフト・プログラムの支援

%d人のブロガーが「いいね」をつけました。