#!/usr/local/bin/perl print "Content-type: text/html\n\n"; print "\n"; print "

文字列処理のサンプル

\n"; print "
\n"; printf "

エスケープシーケンスの表示

\n"; $ascii = pack("CCC",0x1B,0x28,0x42); # JISローマ字(ASCII) $roman = pack("CCC",0x1B,0x28,0x4A); # JISローマ字 $jis_o = pack("CCC",0x1B,0x24,0x40); # JIS漢字(旧JIS漢字) $jis = pack("CCC",0x1B,0x24,0x42); # JIS漢字 $kana = pack("CCC",0x1B,0x28,0x49); # JISかな printf "
\n";
printf "ascii = %02x %02x %02x\n", unpack("CCC", $ascii);
printf "roman = %02x %02x %02x\n", unpack("CCC", $roman);
printf "jis_o = %02x %02x %02x\n", unpack("CCC", $jis_o);
printf "jis   = %02x %02x %02x\n", unpack("CCC", $jis);
printf "kana  = %02x %02x %02x\n", unpack("CCC", $kana);
printf "
\n"; printf "

16進から文字へ変換

\n"; printf "
\n";
# "A" を表示する例
$code = 0x41;
$val = pack("C", $code);
printf "\"%s\"  (%02x)\n", $val, $code;

# "あ" を表示する例
$code1 = 0xa4;
$code2 = 0xa2;
$val = pack("CC", $code1, $code2);
printf "\"%s\" (%02x %02x)\n", $val, $code1, $code2;
printf "
\n"; printf "

ASCII 16進ダンプから文字列へ変換

\n"; $_ = "41 42 43 44 45"; printf "%s ", $_; foreach $code (split) { printf "%s", pack("C", hex($code)); } printf "\n"; printf "

ASCII 16進ダンプ

\n"; $_ = "ABCDE"; printf "%s", $_; s/(.)/printf " %02x", unpack("C", $&)/ge; printf "\n"; print "

\n"; print "このCGIのソース:code01.cgi
\n"; print "\n";