68user's page 掲示板

Prev< No. 2083〜2088> Next  [最新発言に戻る] [過去ログ一覧]
No. 2083 # 68user 2001/07/30 (月) 06:26:03
>>2082 猫じゃらし
ちゃんと環境を書きましょう。Windows ですか?

    1. ヘッダもそのまま 2.gif に出力してしまう。
    2. 改行が入ってしまうなら、Windows でテキストモードになっているのかも。

ということで、

    # ヘッダまでを読み飛ばす
    while (<$remote>){
        last if ( $_ eq "\n" || $_ eq "\r\n" );
    }
    # ここからが画像データ
    while (<$remote>){
        $outdata .= $_;
    }
    open(OUT, "> 2.gif");
    binmode(OUT);
    print OUT "$outdata";
    close(OUT);

でどうでしょう。

foreach を使わず while を使うのは、foreach の () 内はリストを要求する
ので、<$remote> はリストコンテキストで評価され、
  foreach ("1行目のデータ", "2行目のデータ", ..., "最終行のデータ"){
と展開されてしまうからです。よって、
    foreach (<$remote>){
        last if ( $_ eq "\n" || $_ eq "\r\n" );
    }
の時点でファイルハンドル <$remote> から全てのデータを読み
切ってしまうので、last で抜けた後には <$remote> という
ファイルハンドルにはデータが残っていません。

    foreach (scalar(<$remote>)){
で強制的にスカラーコンテキストにするならいいんですが、
この場合は素直に while を使った方がよいでしょう。

No. 2084 # 猫じゃらし 2001/07/30 (月) 14:35:52
>>68user
環境を書き忘れてすいません、マナー違反でしたね、、、
ちなみに、環境はWinMEでActivePerlを動かしている状態です。

さて、68userさんのレスにあったものをペーストして
ソースは下のようになりました。
http://uchu.hypermart.net/image2.txt

これで無事動かすことができました。ありがとうございます。
このHPは、これからも勉強参考にさせてもらいますね。
ではでは、、

No. 2085 # kazu 2001/07/30 (月) 16:17:17
はじめまして超初心者の者です。
質問なのですけど会社で渡されたCシェルのプログラムに

mailx -s

というコマンドがありまして調べても見つかりません。
UNIXのことなどさっぱり分からないので困っています。
知っている人がいたら教えてください。
お願いします。m(__)m

No. 2086 # 68user 2001/07/30 (月) 17:36:39
>>2085 kazu
ちゃんと OS 名やバージョンなどの情報を書きましょう。

> mailx -s
mailx は SystemV 系 UNIX のコマンドです。Linux にも
あるようですが、*BSD にはないはずです (FreeBSD なら
ports で mail/mailx がありますが)。

まぁメールの送信だけなら mail も mailx も同じようなもの
なので、そのまま mail に読み変えればよいでしょう。

No. 2087 # sato.k [E-mail] 2001/07/31 (火) 11:41:58
はじめまして。早速なんですが、UNIXの運用について質問があります。ログインユーザーごとに使用したい文字コードが違うんですが、どのように設定したらよいのでしょうか?教えてください。

No. 2088 # 68user 2001/08/01 (水) 15:09:22
>>2087 sato.k
ログインユーザごとに ~/.cshrc や ~/.profile で
    setenv LANG ja_JP.eucJP
とか
    LANG=ja_JP.eucJP; export LANG
とか書くか、/etc/profile や /etc/csh.cshrc でユーザ名をみて
適切な locale を設定するのはどうでしょうか。

具体的な locale 名や、/etc/ の下のファイル名などは
OS によって違いがあるので、お使いのシステムではどうなって
いるか確認して下さい。

FreeBSD なら /etc/login.conf に各ロケール分のログイン
クラスを作るのもいいかな。

Prev< No. 2083〜2088> Next  [最新発言に戻る] [過去ログ一覧]