nkfが問題?

[上に] [前に] [次に]
あげは 1999/10/27(水) 11:19:49
こんにちは
下記のPerl文でファイルをOpenすることが出来ません。
Openするファイルが"$dir\\$file"に存在すること、またnkfが"$nkfpath"に存在することは確認済です。
ひとつ気になるのは nkfをサーバーにインストールした際にコンパイルが必要という情報です。
が、詳しく掲載されているページを発見することが出来ず..
もしこれが原因で、かつnkf設置方法について詳しく載っているページをご存知でしたら教えて
ください。
(NTサーバーを使用しています)
#以下問題の perl記述
open(HEAD,"cat $dir\\$file | $nkfpath\\nkf.exe -SXj |");

B-Cus 1999/10/27(水) 13:37:46
> open(HEAD,"cat $dir\\$file | $nkfpath\\nkf.exe -SXj |");
NT は知らんのですが、NT に cat ってあるの?

> nkfをサーバーにインストールした際にコンパイルが必要
必要ないです。Windows にはコンパイラが付いてこないので、
バイナリ配布されてます。

hiro-kim 1999/10/27(水) 14:18:58
>NT に cat ってあるの?

ないです。
この程度なら,NTで動作するUNIXコマンド集をインストールしてあえてcatコマンド互換のプログラムを起動しなくても,typeコマンドに置き換えればよいでしょう。

あげは 1999/10/27(水) 14:33:29
>ないです。
...解説等UNIXサーバーを前提として書かれているものが多く、それを"cat"が NTで使用できるのか否かも確認せずに記述したせいですね...
あさはかでした

>この程度なら,NTで動作するUNIXコマンド集をインストールしてあえてcatコマンド互換のプログラムを起動しなくても,typeコマンドに置き
>換えればよいでしょう。
(-_-;)・
"typeコマンドに置き換える"とは具体的にどの様な記述になるのでしょうか?
すみません。Perl初心者の私に教えて頂けますか?

hiro-kim 1999/10/27(水) 16:24:00
マウスを用いたGUIでのプログラム起動ばかりで,
スタート → プログラム → コマンドプロンプト で,MS-DOSコマンドをキー入力するという経験がなくても当然の時代かも知れませんね。

Perlのコマンドではなく,typeというMS-DOSコマンドがあるのです(Windowsのヘルプで調べてください)。catという3文字の代わりに typeという4文字を書けばよいわけです。

B-Cus 1999/10/27(水) 16:33:12
type でもいいですが、できれば余分なプログラムを起動
しないようにした方がよいです。

で、
 open(FH,"$nkfpath\\nkf.exe -SXj < $dir\\$file |")
って、DOS ではできましたっけねぇ?

nkf.exe の仕様が UNIX の nkf と同じならば (多分同じだろうけど)
 open(FH,"$nkfpath\\nkf.exe -SXj $dir\\$file |")
の方がよいかも。

あげは 1999/10/27(水) 20:24:46
あーごめんなさい
>open(HEAD,"cat $dir\\$file | $nkfpath\\nkf.exe -SXj |");
とありましたがタイプミスで、"nkf32.exe"を使用しています。正しくはこうです↓
open(HEAD,"cat $dir\\$file | $nkfpath\\nkf32.exe -SXj |");

B-Cusさんhiro-kimさんの助言の元色々やってみましたが、やはりOpenが正常に処理されません。
エラー等特にでないのですが(え..当たり前なのですか?すいません..ほんと初心者で)、Openの後に
読みに行くと0件で返ってくるので、やはりOpenでこけているんですよね??

B-Cus 1999/10/27(水) 23:24:43
> やはりOpenでこけているんですよね??
さぁねぇ。「色々やってみた」と言われても、
あなたが何をやったのかわからんので。

とりあえずコマンドラインから nkf を実行できるのかどうか
試してみては。

Windows は知らないので、後は詳しい人にまかせます。

> エラー等特にでないのですが
少なくとも UNIX では、
 open(FH,"command|") || die;
として、command が存在しない場合でも die してくれません。不便ですね。

Aurai [E-Mail] 1999/10/28(木) 00:04:54
私の環境(Win95OSR2)では
open(NKF,"nkf32.exe -SXj hoge.txt|");
ができました
nkfにはパスを通してあります
>> エラー等特にでないのですが
>少なくとも UNIX では、
> open(FH,"command|") || die;
>として、command が存在しない場合でも die してくれません。不便ですね。
私の環境でもdieしてくれませんがStdErrorにはちゃんと報告が出ています
とりあえずStdErrorを覗いてみましょう

[上に] [前に] [次に]