実験3
『アップルのiMac G5欲しい!』
”iMac G5が当たったら、○○○に使いたい!”
→当ったら、恵まれたOpenGL環境でプログラムをしたいですなー。
load.pl
#!/bin/perl # # 京ポンブックマークツール編集(~Sys~Bookmark.datを書き換えます) # # ~Sys~Bookmark.dat を別フォルダとかにバックアップを取っておいてください。 # # /Documents and Settings/ログイン名/My Documents/DataLinkKcr/Bookmark/ # フォルダで実行してください。 # # ~Sys~Bookmark.datからの読み込み # > perl load.pl 適当なファイル名.txt # # エディタで "適当なファイル名.txt" を編集。 # #「形式」 # 番号‰名前‰URL‰フォルダ番号 # # ※ '‰' は消さないでください。 # # ~Sys~Bookmark.datへの書き込み # > perl save.pl ↑のファイル名.txt # # "京セラユーティリティソフトウェア for AH-K3001V"を立ちあげる if($#ARGV != 0){ print "usage : perl $0 出力txt\n"; exit 1; } # 定数 $infile = "~Sys~Bookmark.dat"; $outfile = $ARGV[0]; $KUGIRI = '‰'; # --------------------------------------------------------------------- # 始めに読みこみ open(IFILE, "$infile") || die "can not open $infile"; binmode(IFILE); @inbuf = (); $filesize = 0; while(1){ if(!sysread(IFILE, $inbuf[$filesize], 1)){ last; } $filesize++; } close(IFILE); # --------------------------------------------------------------------- # 出力 open(OFILE, "> $outfile") || die "can not open $outfile"; $bp = 0x102; # なにか $bp += 4; # 個数 while($bp < $filesize){ # 番号 $bp += 4; # 0x2c 0x10 0x00 0x00 printf(OFILE "%d$KUGIRI", unpack("c", $inbuf[$bp++])); $bp += 3; # 名前 $sz = unpack("c", $inbuf[$bp++]); $name = ""; for($i = 0; $i < $sz; $i++){ $name = $name . $inbuf[$bp++]; } printf(OFILE "%s$KUGIRI", $name); # URL $sz = unpack("c", $inbuf[$bp++]); $name = ""; for($i = 0; $i < $sz; $i++){ $name = $name . $inbuf[$bp++]; } printf(OFILE "%s$KUGIRI", $name); # フォルダ番号 printf(OFILE "%d\n", unpack("c", $inbuf[$bp++])); $bp += 3; $bp += 8; } close(OFILE); exit 0;
save.pl
#!/bin/perl if($#ARGV != 0){ print "usage : perl $0 入力txt\n"; exit 1; } # 定数 $infile = $ARGV[0]; $outfile = "~Sys~Bookmark.dat"; # --------------------------------------------------------------------- # ヘッダ読みこみ open(IFILE, "$outfile") || die "can not open $outfile"; binmode(IFILE); @inbuf = (); for($i = 0; $i < 0x102+4; $i++){ if(!sysread(IFILE, $inbuf[$i], 1)){ die "$outfile error"; exit 1; } } close(IFILE); # --------------------------------------------------------------------- # 出力 open(IFILE, "$infile") || die "can not open $infile"; open(OFILE, "> $outfile") || die "can not open $outfile"; binmode(OFILE); for($i = 0; $i < 0x102+4; $i++){ syswrite(OFILE, $inbuf[$i], 1); } $kosuu = 0; while(){ if($_ eq ""){ last; } @w = split(/‰/, $_); syswrite(OFILE, pack("c", 0x2c), 1); syswrite(OFILE, pack("c", 0x01), 1); syswrite(OFILE, pack("c", 0x00), 1); syswrite(OFILE, pack("c", 0x00), 1); syswrite(OFILE, pack("c", $w[0]), 1); syswrite(OFILE, pack("c", 0x00), 1); syswrite(OFILE, pack("c", 0x00), 1); syswrite(OFILE, pack("c", 0x00), 1); $len = length($w[1]); syswrite(OFILE, pack("c", $len), 1); syswrite(OFILE, $w[1], $len); $len = length($w[2]); syswrite(OFILE, pack("c", $len), 1); syswrite(OFILE, $w[2], $len); syswrite(OFILE, pack("c", $w[3]), 1); syswrite(OFILE, pack("c", 0x00), 1); syswrite(OFILE, pack("c", 0x00), 1); syswrite(OFILE, pack("c", 0x00), 1); syswrite(OFILE, pack("c", 0xFF), 1); syswrite(OFILE, pack("c", 0xFF), 1); syswrite(OFILE, pack("c", 0xFF), 1); syswrite(OFILE, pack("c", 0xFF), 1); syswrite(OFILE, pack("c", 0x00), 1); syswrite(OFILE, pack("c", 0x00), 1); syswrite(OFILE, pack("c", 0x00), 1); syswrite(OFILE, pack("c", 0x00), 1); $kosuu++; } close(IFILE); close(OFILE); # --------------------------------------------------------------------- # 個数出力 open(OFILE, "+< $outfile") || die "can not open $outfile"; binmode(OFILE); seek(OFILE, 0x102, 0); syswrite(OFILE, pack("c", $kosuu), 1); close(OFILE); exit 0;
うひ
試しに登録してみた。
まったり。