2010年11月19日 20時19分22秒
ファイル名書けって怒られた(´・ω・`)
## 4桁の16進数を読み込んでバイナリ形式で書き出すサンプル binmode(STDOUT); while(<STDIN>) { chomp($_); $code = uc( $_ ); printf("%c%c", unpack("C", pack("H2", substr($code,0,2))), unpack("C", pack("H2", substr($code,2,2))) ); }
標準入出力を使うことを想定した。
8140 8150 8160 8150 8147
いわゆるCP932(SJIS)の文字を5個並べた。
D:\work>perl s1.pl < input.txt  ̄~ ̄; D:\work>
標準出力をバイナリモードにするため binmode()でSTDOUTを指定した。 次に標準出力へ1バイトずつ書き出すために pack()で16進数文字列2桁を1バイトの数値に変換、それを unpack()で“文字”に変換する。あとは printf()の書式で %c を指定した。 ※2バイトのコードの上位・下位バイトを各々長さ1バイトの文字として編集した