68user's page 掲示板

Prev< No. 3535〜3553> Next  [最新発言に戻る] [過去ログ一覧]
No. 3535 # ken 2004/01/28 (水) 02:15:32
さきほどXSのことを質問させていただいたのですが、なんとか解決しました(汗
どうやら、根本的に思い違いをしていたのが原因のようで...。
わざわざのご回答、ありがとうございます。
もう少しぼくが早く解決して書き込んでいれば良かったのですけどね。

No. 3536 # yuki 2004/01/28 (水) 13:36:44
>>3528 68user
The symbolic linkでしたか。
ぜんぜん気がつきませんでした。有難うございました。

No. 3537 # タカ 2004/01/29 (木) 14:52:55
はじめまして。タカと申します。
Perl関連について御教授ください。
Windows端末にてActivePerl-5.8.2.808-MSWin32-x86をインストールし
Perlを作成しております。
そこで、PerlでExcelファイルに出力するプログラムを
作ろうと思っております。
その為、Spreadsheet-WriteExcel-0.42モジュールを、
ダウンロードしました。
本モジュールはWindowsでも機能すると表示されているのですが、
どうやって使用すればいいのか分かりません。
Spreadsheet::WriteExcel version 0.33(日本語訳)の
HPを見ているのですが、私の知識不足で不明です。

もしご存知であれば御教授いただきたいのですが、
よろしくお願いいたします。

No. 3538 # 68user 2004/01/29 (木) 15:15:28
>>3537 タカ
http://member.nifty.ne.jp/hippo2000/perltips/module_install.htm
によると、ActivePerl の場合は PPM なるものを使うそうです。

# わたしは使ったことはありません。

No. 3539 # タカ 2004/01/29 (木) 15:56:06
ありがとうございました。
ちょっと試してみます。

No. 3540 # has 2004/01/29 (木) 17:02:12
クッキーに関する↓の冒頭でRFCに盛り込まれていないとありますが、
どうも2109で触れているそうですよ。
http://x68000.startshop.co.jp/~68user/webcgi/cookie.html

参考にさせていただいたサイト:
http://www.nonki.net/technical/report/http-cookie/
http://www.ietf.org/rfc/rfc2109.txt

No. 3541 # 68user 2004/01/29 (木) 18:48:20
>>3540 has
ありがとうございます。とりあえずそこだけ直しておきます。

> どうも2109で触れているそうですよ。
RFC 2109 は obsolete で、今は RFC 2965 です。
      http://www.studyinghttp.net/rfc_ja/rfc2965_ja.html

でもまぁ、Set-Cookie2 は全然流行っていませんけどね。

No. 3542 # 右院堂 2004/02/01 (日) 21:42:44
はじめまして 右院堂 と申します。
いきなり質問で エゴ丸出しで申し訳ないですが
ASP には Response.Buffer = True というのがあって、
ある html の form から 呼ばれた asp が 呼び元へ 自分の form を
Response.Redirect で 返す時、Response.Redirect が実行されるまで HTMLヘッダーの出力を引き伸ばすことが出来ます。
これをやらないと HTMLヘッダーが 自分自身として Redirectされる前に出力されてしまうからです。
Perl では これに相当する記述はあるんでしょうか。

No. 3543 # 68user 2004/02/01 (日) 22:11:49
>>3542 右院堂
ASP はよく知りませんが、素の perl を使う場合は (そういう機能を
持つモジュールを使わない限りは) 相当する機能はないです (そういう
機能を持つモジュールの存在は知りません)。

      $buf .= "出力文字列1";
      $buf .= "出力文字列2";
      ...
      print $buf;

や、

      open(STDOUT, "> /foo/bar/tmp.$$");
      print "出力文字列1";
      print "出力文字列2";
      ...
      close(STDOUT);

      open(IN, "/foo/bar/tmp.$$");
      print <IN>;
      close(IN);

などと自分でバッファに保存し、最終的に出力するのが
よいと思われます。

No. 3544 # yuki 2004/02/04 (水) 17:58:59
ポートに関しては初心者です。
すいませんが、ポート番号について教えて下さい。

Solarisを使用していますが、ポート番号は任意の決め事ですか?
現在使用しているSolarisは下記設定になっているようです。
WEBサーバはポート=80、FTP=20、プリントサーバ=9100

これらは、標準で決まっているのでしょうか?
また、相手側を意識せず勝手にきめてもよいのでしょうか?

他に、ポートの設定をみる方法とかありましたらご教授下さい。
宜しくお願いします。

No. 3545 # 68user 2004/02/04 (水) 18:10:08
>>3544 yuki
> Solarisを使用していますが、ポート番号は任意の決め事ですか?
おおまかな指針はありますが、任意です。

> WEBサーバはポート=80、FTP=20、プリントサーバ=9100
デフォルトではそのような設定になっていますが、ほとんどの
場合は (サーバソフトウェアが対応していれば) ポートは変更
できるでしょう。ポート変更方法は各サーバソフトウェアの
マニュアルに書いてあるはずです。

> また、相手側を意識せず勝手にきめてもよいのでしょうか?
標準的でないポートを使用するよう設定変更してもいいですが、
利用者に通知しないと使うことができません。

例えば web サーバであれば
        http://www.example.co.jp/
ではなく
        http://www.example.co.jp:8080/
にアクセスするようアナウンスしないといけませんし、プリンタで
あれば自組織の環境設定手順書に
    「プリンタの設定時に、ポート xxxx を使用するように設定してください」
と書いておく必要がある、といった感じです。

というわけで、標準的でないポートを使うことはできますが、
なにかとめんどくさい、という感じです。また、外部向けの
サービスであれば、ファイアウォールで弾かれたりする危険性は
高まりますね。

No. 3546 # yosi [E-mail] 2004/02/06 (金) 12:22:43
irix使ってますが、ls -lでfileの詳細を見ると、拡張子の後に*が表示されてます。これはなにを意味するのでしょうか?

No. 3547 # 68user 2004/02/06 (金) 22:17:48
>>3546 yosi
実行ファイルと思われます。ls の -F オプションの説明を読んでください。

No. 3548 # つくも 2004/02/07 (土) 15:13:42
UNIXのCシェル2点につてい教えて下さい。

1点目
以下の、a.txtファイルから第1フィールドの値を
先頭の'0' or "> 0 "のゴミを取って、10桁(先頭0なし)だけを
また、第1フィールドの文末の半角スペースや’|’を取ってとり
だしたいのですが、第1フィールはawkを使って取得できますが、
その後に編集ができません。たしか、sedの何かを使えば数字のみ
だけを取り出せたと思うのですが、浮かんできません。
教えていただけないでしょうか。

cat a.txt | awk -F"," '{ print $1 }' | sed

a.txt
09012345678,aaaa
07055593850,bbbb
9098765432,cccc
7012345678,ddddd
> 07012345679 | ,eeeee
07012345670 ,ffff

出力結果
9012345678
7055593850
9098765432
7012345678
7012345679
7012345670

2点目
Cシェルで定義ファイルに設定してある項目を読み込むには
どうしたらよいのですか。
定義ファイル
MN=ABCDEFG
FILE=/work/temp.txt

set PARM1 = `grep ^MN 定義ファイル| awk -F"=" '{ print $1 }'`
set PARM2 = `grep ^FILE 定義ファイル| awk -F"=" '{ print $1 }'`
と繰り返すかないのでしょうか。
また、何も、タブとか半角スペースから始まっている場合もあると思うの
ですが、どうすればよいのですか。

No. 3549 # zsh 2004/02/09 (月) 08:22:34
>>3548 つくも
1点目はawkのみで可能。
(古いawkではダメとかあるかも知れないけど。)
------
awk 'BEGIN {
                FS = "," ;
} {
                i = match($1,"[1-9]");
                print substr($1,i,10);
}' a.txt
------

2点目は、こんな事が許されるのか判りませんが
------
eval `awk 'BEGIN{ FS="=" }{ if(NF != 0) print "set " $1 " " $2}' param.txt`
------
大人しく定義ファイルで「set A=val」と書いて
sourceすべきだと思いますが・・・

赤色の文字は 「Windows 機種依存文字」か、いわゆる「半角カナ」です。 この掲示板では自動変換されますが、今後は使用しないで下さい

No. 3550 # zsh 2004/02/09 (月) 08:28:33
>>3549 zsh
2点目は以下の間違い。
------
eval `awk 'BEGIN{ FS="=" }{ if(NF != 0) print "set " $1 "=" $2 }' param.txt`
------

>68user様
半角カナ失礼しました。

No. 3551 # つくも 2004/02/09 (月) 13:54:08
>>3549 zsh
>>3550 zsh
ありがとうございました。
両方ともできました。

ただ、2点目については、定義ファイルでの変数名とシェル内での設定
する変数名がことなっていたので最初は誤ってしまいました。

No. 3552 # 恵美 2004/02/12 (木) 19:48:32
はじめまして、恵美といいます。
いろいろ検索していましたら、このページにたどり着きました。
私は某会社のSE見習いなのですけれど、perlのリファレンスでつまづき悩んでいます。
ハッシュのリファレンスを上手にコピーする方法がよく、...いえ...さっぱりわからないです。
会社の人にきいたら、リファレンスは知らないと言われ、ダブルショックでした。

リファレンスを、1つ1つコピーすると

$hash->{'str'} = $hash2->{'str'};

これだけなのですが、複数の値を同時にコピーするといつも失敗してます。

普通のハッシュでスライスを使うと、

my %hash = (a=>1,b=>2,c=>3);
my %hash2 = (x=>11,y=>12,z=>13);

@hash{'a','c'} = @hash2{'x','z'};

print $hash{'a'},$hash{'c'},"\n";

  11 13 となるのですけれど、同じことをリファレンスでやると失敗するんですよ。

$hash = {a=>1,b=>2,c=>3};
$hash2 = {x=>11,y=>12,z=>13}

このとき、
print $hash->{'a'},$hash->{'c'},"\n";

の答えはどうしたら、 11 13 になるのでしょうか。

よろしくお願いします。

No. 3553 # 68user 2004/02/12 (木) 23:04:41
>>3552 恵美
    - ($x{'k1'}, $x{'k2'}) は @x{'k1','k2'} と等価 (*1)。
    - ハッシュのリファレンス $y のデリファレンスは $$y{'k1'}
        ($y->{'k1'} と同じ)。

をふまえた上で、今回は ($$y{'k1'}, $$y{'k2'}) を代入したい
ので、*1 を素直に置き換えると
        @$hash{'a','c'} = @$hash2{'x','z'};
となります。

てゆーか、ハッシュスライスは使わない方がいいですよ。配列と
間違えやすいので、可読性低すぎです。わたしなら 2 項目であれば
      $hash->{'a'} = $hash2->{'x'};
      $hash->{'c'} = $hash2->{'z'};
と 2行で書きます。

どうしても短く書きたい場合でも
      ($hash->{'a'}, $hash->{'c'}) = ($hash2->{'x'}, $hash2->{'z'});
とします。

項目数が多いなら
      my %map_table = ('x'=>'a', 'z'=>'c');
      while (my ($fromkey, $tokey) = each %map_table){
            $hash->{$tokey} = $hash2{$fromkey};
      }
とか。長くはなりますが、項目の対応がもっともわかりやすく、タイプ
ミス ($hash と $hash2 を書き間違えるとか) の可能性も減ります。

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