プログラム実行No.26905
Sa さん 09/08/07 15:34
 

perl -w <con >con
を記入して実行してるのですが、表示が正常でない場合があります。

最新版で確認した物
$test = 0x00000000;
print (pack( "V*", $test));

新しく出来たタブに何も表示されません。
perlが何も出力してないのかと思ってしまいました。
5.01で確認したときも同じ症状でした。



------------------------------------------

5.01で確認したもの。

my $file = "./hogehoge.bmp";
my $count;
open FILE, "$file" or exit;{
    binmode FILE;
    local $/ = \1;
    while(<FILE>){
        $count ++;
        print (sprintf("%03d", unpack("C", $_ )) . ($count % 16 ? " " : "\n
")) ;
    }
}close(FILE);



正常に動作しません。
症状:
 1:なんか知らんけど改行の位置が乱れる場合がある。
 2:その際、その周辺で高確率でsprintfの整形も乱れる。
 3:プログラムを実行するたびにその位置がランダム。

環境:
 1:windowsXP
 2:ActivePerl5.8.7
 3:秀丸5.01から perl -w <con >con を記入して実行。

備考:バッファをフラッシュさせると圧倒的に乱れる箇所が減少しました。
しかしそれでも整形や改行位置が乱れます。
なぜでしょう?


ただし、いずれの件も出力先を他にすると必ず正常に表示されるので、秀丸側の問題
と思われます


[ ]
RE:26905 プログラム実行No.26907
秀丸担当 さん 09/08/07 16:19
 

ご迷惑をおかけして申し訳ありません。
過去に、run文の結果が乱れるというような報告がありました。
V5.16でも似た報告の修正が行われていました。

最新版のV7.11を使っていただくことをお勧めしたいところですが、V5.xx系を使
われたいという場合でも、V5.xxの最終版であるV5.18を使われることをお勧めし
ます。
以下のページからV5.18はダウンロードすることができます。

 秀丸エディタのその他の古いバージョン
 http://hide.maruo.co.jp/software/hidemaruold.html

ここの hm518_signed.exe (日本語版) からダウンロードできます。
お手数をおかけして申し訳ありませんが、まずはV5.18(できればV7.11)にして
問題が起きないかどうか確認していただけると助かります。

--------------
参考の改版履歴

秀丸エディタ V5.xxの改版履歴
http://hide.maruo.co.jp/software/hidemaruhist_v5.html
> 2006/05/24 Ver5.16
> >conへの出力で結果が崩れることがある問題修正。

秀丸エディタV7.09βの改版履歴
http://hide.maruo.co.jp/software/hidemaruhist_v709beta.html
> 2008/06/27 Ver7.09β9
>run文実行時の GNU sort での Buffer overrun 対策。

[ ]
RE:26907 プログラム実行No.26908
Sa さん 09/08/07 16:34
 
後者に関しまして、7.11で動作させたところ、正常に動作しました。
ご迷惑をおかけしました。

ただ、前者に関しては7.11と5.01で動作させた物で、
どちらで動作させても出力結果が得られません。



また、別の話ですが、後者に関しては744,322byteのファイルを読み込み出力させた
のですが、
perlからファイルを生成してそこに出力し、
そのファイルを秀丸で読み込んだほうが早くなります。

どうゆう処理方法を取っているのかはわかりませんが、
直接秀丸に出力させたほうが作業が遅くなるって、なんかおかしいような気がします
のです。。。。

[ ]
RE:26908 プログラム実行No.26909
秀丸担当 さん 09/08/07 17:03
 

>後者に関しまして、7.11で動作させたところ、正常に動作しました。
>ご迷惑をおかけしました。
>
>ただ、前者に関しては7.11と5.01で動作させた物で、
>どちらで動作させても出力結果が得られません。

とりあえず、後者に関して直ったということでよかったです。

前者についてActivePerlを入れてみて試してみたところ、確認することができま
した。
Perlの文法のことはよくわからないですが、これは文字コード 0 のNULL文字が出
力されているようです。
NULL文字は文字列として扱うことはできないので、秀丸エディタ上に出力するこ
とはできないです。
これはV7.11においては仕様とさせていただきたいと思います。
申し訳ありません。


>また、別の話ですが、後者に関しては744,322byteのファイルを読み込み出力させた
>のですが、
>perlからファイルを生成してそこに出力し、
>そのファイルを秀丸で読み込んだほうが早くなります。
>
>どうゆう処理方法を取っているのかはわかりませんが、
>直接秀丸に出力させたほうが作業が遅くなるって、なんかおかしいような気がします
>のです。。。。

おそらく、描画してスクロールしながら出力しているのが遅い一番の理由かもし
れません。
cmd /c dir >con
としても、ずらずらと遅く出力されます。


現在開発中のV8.00βでは、標準入出力のオプションに「標準出力をリダイレクト
中は描画しない」というオプションが追加予定で、これで高速にできるようにな
る予定です。
後者のことは確認していませんが、cmd /c dir >con は一瞬で出力されるように
なることは確認しています。

それでも(描画しないとしても)、やはり普通のファイル読込みのほうが早いか
もしれません。
普通のファイル読込みはいろいろ高速にするための工夫がされていますが、標準
出力のリダイレクトはあまり高速化については工夫されていないです。

前者の例でファイルに出力した場合(perl -w <con >c:\filename.txt) に限っ
てですが、β版ではNULL文字でもファイルに出力できるようにしてありました。
直接出力の場合はやはり対応していません。

[ ]
RE:26909 プログラム実行No.26910
Sa さん 09/08/07 17:17
 
丁寧なご回答まことにありがとうございます。
秀丸内だけでバイナリとテキストを相互に変換しながら手書きで編集しり、
プログラムコードに直接バイナリを埋め込んだりしたかったんですが、諦めることに
しました。

まぁ普通はやらないことだと思うんですが、秀丸ならできそうだな、と勘で決め付け
てたところがありました。


コマンドに関しては試してみようかと思います。
本当にありがとうございました。

[ ]
RE:26910 プログラム実行No.26911
秀丸担当 さん 09/08/07 17:44
 

>秀丸内だけでバイナリとテキストを相互に変換しながら手書きで編集しり、
>プログラムコードに直接バイナリを埋め込んだりしたかったんですが、

もしかしたら関係ないかもしれないですが、参考までに書いておきます。
秀丸エディタにはバイナリモードというのがあって、後者のPerlコードのように
16進数文字列(10進数3桁はできないです)のテキストのようにファイルを扱うこ
とができます。

[その他]→[メニュー編集]より、「ファイル」メニューに「バイナリモード」を
入れておくことで簡単に切り替えができます。

バイナリモードであればNULL文字も含めた編集・保存もできます。

ただ気をつけなくてはいけないことがあります。
.bmpファイルのようなNULL文字などを含むファイルを非バイナリモード(通常の
テキスト)として読み込んだ場合はやはりNULL文字は扱えず文字化けして、保存
してしまうとファイルを壊してしまうことになるので、通常のテキストでは保存
しないように充分な注意が必要だと思います。

[ ]
RE:26911 プログラム実行No.26912
Sa さん 09/08/07 20:13
 
なるほど!秀丸がバイナリモードに対応してるのは知りませんでした。
今まで他のバイナリエディタを使ってました。
同じエディタで操作できると作業がとても速くて良いですね。

これを機会にHELPも読ませて頂きました。
バイナリデータを編集しているときは、一番左のタブに、扱ってるデータを編集する
ためのPerlのスクリプトを開いていることが多いのですが、秀丸機動引数の/fb オプ
ションも併せて使うと作業が効率化しそうですね。

本日は何から何まで本当にありがとうございました。

[ ]