68user's page 掲示板

Prev< No. 2233〜2241> Next  [最新発言に戻る] [過去ログ一覧]
No. 2233 # りょうすけ 2001/10/27 (土) 03:54:21
おまじないというと、現時点で目先の理解の妨げになるから今はわからなくていいみたいな意味で書籍などでも使われてると思うので意味を通じさせるつもりは無いと思うんですよね。
説明が面倒(できない)でおまじないと言ってるわけじゃないですから。

でも、おまじないと言われて「ここでおまじないするのか」と素直に理解する人もあんまりいないですよね。
こういう時が、自分で調べ初めて自分で答えを見つける習慣を身に付けるチャンスになってるとおもうので良い表現だと思いますが。

No. 2234 # 名無しさん 2001/10/27 (土) 10:55:14
>>2233 りょうすけ
>説明が面倒(できない)でおまじないと言ってるわけじゃないですから。
ええ。そうですよね。"おまじない"という表現に異論はありません。枝葉の部分まで細かく説明するとかえってわからなくなっちゃいますもんね。

まぁ、プログラムの可読性という面でいうとautoflushも明快で良いかな?と思っただけです。(でも動作の仕組みを理解するにはselectでファイルハンドルを操作したほうが勉強になるのかも・・)

No. 2235 # H-Hash [URL] 2001/10/28 (日) 16:56:54
こんにちは。
http://x68000.startshop.co.jp/~68user/net/rfc.html から
リンクして頂いているThe WAYというサイトの管理人です。

このたび、RFC2616の日本語訳のURLが
http://www.studyinghttp.net/rfc_ja/2616/ に変更いたしました。
是非リンクの変更をよろしくお願いします。

No. 2236 # Ka23 2001/10/30 (火) 18:52:06
UNIX プログラミング FAQのサイトが
http://www.adl.rd.nacsis.ac.jp/~moro/unix-programmer/faq-j_toc.html
に移転しているようです。

No. 2237 # ふくし [E-mail] 2001/10/31 (水) 23:36:24
また質問ですいません。
ActiveState 以外の Windows 用 Perl で、
自由に配布できるものってなにがおすすめでしょうか?

友人が自費出版本に CD-ROM を付けて売りたいのですが、
ActivePerl のライセンスがやたら面倒くさく、
(なんか 20 ページの英語の書類を書いてどうこう、、という、
    手続きぐらいしろよって話なんですけど)
なんとかならないか、という話です。
勝利条件としては
・Perl 5.005 移行で
・Windows で動き
・Jcode.pm が動く
ということらしいです。

DJGPP 版、というのもあるようですが、
DOS 用ということで 16bit ですよね。
制限きついのかな、、?

Cygwin はぁ、、? と聞いてみましたが、
Cygwin はその説明(bash の説明とか)だけで本1冊書かないといけない、
そうです。(そうかぁ、、?)
でも cygwin.dll だけあれば Perl は動くのかな?
(そういうインストーラー作れるかな?)
(そんな部分的な部分を再版しても Cygnus 的に大丈夫なのかな?)

もしご存知の方がいらっしゃればご教示ください。
LSI-C とか Borland C++ のフリー版とかで Perl をコンパイルしてみようかな、、。

No. 2238 # ふくし [E-mail] 2001/11/01 (木) 00:46:07
あーなんかボケボケ書いたかも、、(DJGPP あたり、、)
また落ち着いて謝りにきます、、;;;

No. 2239 # mo 2001/11/01 (木) 01:20:40
こんにちは 
Perlについて質問させてください。

%aa=(a=>1,b=>2,c=>3);
%bb=(a=>4,b=>5,c=>6);
%cc=(%aa,%bb);

これでは%cc は a=4,b=5,c=6 のように上書きされてしまいます。
%cc が a=5,b=7,c=9 になるようにするにはどうしたらいいのでしょうか

よろしくお願いします。 

No. 2240 # ふくし [E-mail] 2001/11/01 (木) 02:04:05
#質問で迷惑掛けてるので答で貢献;;;

mo さん、はじめまして。

%aa=(a=>1,b=>2,c=>3);
ていうことは、
$aa{a} = 1;
$aa{b} = 2;
$aa{c} = 3;
と同じです。

a = 1;
b = 2;
c = 3;
ではないです。

%aa はハッシュというものを作っています。
お手もとの参考書などで「ハッシュ」という言葉を調べてください。

で、%bb=(a=>4,b=>5,c=>6);
ていうことは、
$bb{a} = 4;
$bb{b} = 5;
$bb{c} = 6;
と同じです。

%cc=(%aa, %bb);
ということは、上の結果、
%cc=(a=>1,b=>2,c=>3,a=>4,b=>5,c=>6);
と一緒なので、
$cc{a} = 1;
$cc{b} = 2;
$cc{c} = 3;
$cc{a} = 4;
$cc{b} = 5;
$cc{c} = 6;
と一緒なので、結局 $cc{a}、$cc{b}、$cc{c} は2回代入されるので、
後のほうが有効になって、
$cc{a} = 4;
$cc{b} = 5;
$cc{c} = 6;
となっているわけですね。

で、この場合、$cc{a}、$cc{b}、$cc{c} には、
それぞれ $aa{a}、$aa{b}、$aa{c} と $bb{a}、$bb{b}、$bb{c} の
合計が入って欲しいわけだから、
%cc = (a => $aa{a}+$bb{a}, b => $aa{b}+$bb{b}, c => $aa{c}+$bb{c});
とするか、
foreach (a..c) { # $_ が a から c までくりかえし実行
    $cc{$_} = $aa{$_} + $bb{$_};
}
とするか、%aa、%bb にどんなキーが入っていてもいいことにするには
foreach (keys %aa) { # $_ に %aa のキーを次々に入れながら繰り返し実行★
    $cc{$_} = $aa{$_} + $bb{$_};
}
とするか、
%cc = map {$_ => $aa{$_} + $bb{$_} } keys(%aa);
とするか。

★がついたのが一番おすすめか?
foreach、keys、a..c、map については適当な本を調べてください。(ひでえ、、)

とりあえず
foreach (a..c) {
    print "$_\n"
}
とか
foreach (keys %aa) {
    print "$_\n"
}
とか、
@x = (1..5);
@y = map{ $_ * 2 } @x;
foreach (@x) {
    print "$_\n";
}
とか動かしてみると面白いと思います。

#もっとあっと驚く回答があったら教えてください

No. 2241 # ふくし [E-mail] 2001/11/01 (木) 10:30:56
すいません

下で
foreach (a..c) {
と書いているのは
foreach ('a'..'c') {
と書かないと怒られます。(警告だけで、動作はするようです)

ようは、a、b、c は変数の名前でなく文字列で、
%aa、%bb、%cc というハッシュのキーですね。
%aa というハッシュの、キーが 'a' の値にアクセスするには
$aa{'a'} と書きます。ただしこの場合 a はハッシュのキーであると
はっきりしているので $aa{a} と省略形で書けます。

同じハッシュでキー x の値に 550 を、キー y の値に 660 を入れるには
キーと値を交互に指定するリストを使って
%aa = ('x', 550, 'y', 660);
と書きますが、キーと値の関係をはっきりさせるために
カッコの変わりに => という記号を使えば
%aa = ('x' => 550, 'y' => 660);
と書けます。で、この場合は => の左側はハッシュのキーなので
省略して
%aa = (x => 550, y => 660);
とも書けるわけです。
でも、この '' 省略方式だと、
空白を含むキーが使えません。
%kg = ('yamada tarou' => 80, 'satou tamao' => 50);
だと
$kg{'yamada tarou'} に 80 が、$kg{'satou tamao'} に 50 が
入りますが、
%kg = (yamada tarou => 80, satou tamao => 50);
だとエラーが出て動きません。
$kg{yamada tarou} も怒られて動きません。

下のプログラムで a, b, c というのは、
ハッシュのキーで「文字列」であることを覚えておいてください。

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