トップページphp
1001コメント364KB

Perl コーディング初心者質問コーナー Part36

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん04/07/14 13:23ID:???
いらっしゃーい、Perlのコーディングで困ってる人のスレです。

【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。

1: 自分はこう言う事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。

最低でも1と3が無いと誰も答えられないよ。
ソース貼る時は、全角スペースでインデント忘れずに。
良い回答は良い質問から。一緒に勉強しましょう。

過去ログやお勧めサイトは >>2-10
0773nobodyさん04/08/15 17:30ID:???
>>771
@hozonに全部パスを入れとけアフォ

foreach(@hozon){
print "ok" if -e $_;
}

このクソアフォが!?
0774nobodyさん04/08/15 17:32ID:???
>>773
っていうか
print "ok" if grep {-e $_}@hozon;
だったな。
0775nobodyさん04/08/15 17:37ID:???
print "ok" if (grep {-e $_}@hozon) == @hozon;
0776ぢおぢお04/08/15 17:44ID:EbxomzZw
見ても全然分かりません。出直してきます・・・
0777nobodyさん04/08/15 17:45ID:???
>>772
if ( $a && $b && $c ){ print "これでよくね?w" }
それとも
if ( $a > 0 ){ if ( $b > 0 ) { if ( $c > 0 ) { print "天山ツームストン" } } }
にするか?いっそのこと
exit || exit;
でいいんじゃん?
0778nobodyさん04/08/15 17:46ID:???
ウホッ!?フィーバーだ!w
0779nobodyさん04/08/15 17:47ID:???
なんだこれ アホらし
0780ぢおぢお04/08/15 18:01ID:YD+WDikb
>777
なりませんでした。
0781nobodyさん04/08/15 18:08ID:???
>>780
バカじゃん
0782ぢおぢお04/08/15 18:10ID:YD+WDikb
何が?
0783nobodyさん04/08/15 18:18ID:???
>>782
こいつマジでバカ
0784nobodyさん04/08/15 18:41ID:???
制御構文で質問です。
foreachのように、毎回スカラにリストの内容を代入する
           +
forのように$iに現在のループ回数を入れる。

みたいなことは不可能ですか?foreach側で使うのは keys %hash なのでforの$iとリンクさせる形での
処理はできません。
078578404/08/15 18:45ID:???
うまく説明できませんでしたが、foreachの途中で現在のループ回数を調べて、
ループ回数が一定の基準を超えると、発動する処理をしたいのです。
0786nobodyさん04/08/15 18:49ID:???
>>785
ダサいやつでいいなら
$i = 0;
foreach(@a){
処理〜;
print "2桁キター" if $i > 9;
$i++;
}
で一応できるよ。
078778404/08/15 19:00ID:???
>>786
さっそくありがとうございます!
0788nobodyさん04/08/15 19:28ID:???
%data = (
a => 1,
b => 2,
c => 3,
d => 4,
e => 5,
);
@a = keys %data;
delete @data{@a[1..3]};

これが
$data = {%data};
の場合に
delete @data->{@a[1..3]};
としてもうまくいきませんが、何か方法はありますか?
0789黒死犬 ◆EgxBlf8nvc 04/08/15 20:17ID:???
delete( @$data{ @a[1..3] } );

こうですね
0790nobodyさん04/08/15 23:12ID:???
readでSTDINから読んで、$bufferに代入したいんですが、いきなりリファレンスとして代入というのはやってもいいんでしょうか?
read(STDIN,$$buffer,$ENV{CONTENT_LENGTH});
のようにすればできたのですが、いきなり$$bufferに代入するとおかしい気がするので(シンボリックリファレンス?なんか非推奨って読んだ気がします)
$buffer = \"";
read(STDIN,$$buffer,$ENV{CONTENT_LENGTH});
とかを考えてみました。
0791nobodyさん04/08/15 23:37ID:???

☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆
★                                               ★
☆ 新規質問は名前欄・メール欄を空にして行え                  ☆
★                                               ★
☆ 質問者が返信する際は、名前欄に「最初に質問したレス番号」を入れろ  ☆
★                                               ★
☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆
0792nobodyさん04/08/16 01:57ID:???
メール欄を空にするとage荒らし死ねと言われる。
0793nobodyさん04/08/16 02:09ID:???
上げっぱなしで続けるからだろ。
こんなところか。

☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆
★                                                ★
☆ 新規質問は名前欄・メール欄を空にして行え                   ☆
★                                                ★
☆ 返信は名前欄に「最初に質問したレス番号」・メール欄に「sage」を入れろ ☆
★                                                ★
☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆
0794nobodyさん04/08/16 02:11ID:???
メール欄を0にするとブラウザで見てる厨房にどうやってIDだけ消すのと聞かれる。
0795nobodyさん04/08/16 02:15ID:???
>>793
☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆
★                                              .★
☆                                              .☆
★ 右の星もちゃんと整列させてから書き込め                   .★
☆                                             .☆
★                                               ★
☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆
0796nobodyさん04/08/16 02:22ID:???
>>795
そういうお前が整列させてから書き込め。
0797nobodyさん04/08/16 09:30ID:???
っていうかそんなルールこのスレにはないだろ
ウザい質問者は徹底スルーが基本だって。
0798nobodyさん04/08/16 09:52ID:f4GvLXd6
$sth = $dbh->prepare(
qq{ INSERT tbl_name SET name="$hoge{name}" sex="$hoge{sex}" weight="$hoge{weight}" }
)
%hogeにはフォームから送られてきたクエリが格納されてます。

このようなSQLインジェクションをやる場合にXSS対策として、
foreach( keys %hoge){
$hoge{_} =~ s/"|'//g;
}

としてるのですが、これでXSS対策は万全でしょうか?とりあえず上のSQL文の場合、クォートさえ消しておけば
全部文字列として解釈されるので、おかしなことにはならないと思いますが、もしも穴がありましたら
ご指導願います。
0799nobodyさん04/08/16 09:56ID:???
>>798
わざわざprepareするんだしプレースホルダ使えよ。
080079804/08/16 10:36ID:???
>>799
プレースホルダ???調べてみます。
080179804/08/16 10:49ID:???
$sth = $dbh->prepare(
q{ INSERT tbl_name SET name="?" sex="?" weight="?" }
);
$sth->execute($hoge{name},$hoge{sex},$hoge{weight});

http://www.rfs.jp/sitebuilder/perl/dbi/02.html#プレースホルダとバインド値
ここを見ながらやってみましたが、これであってるのでしょうか?
後から結びつけることで、SQL構文になってしまうようなバインド値の場合にエラーを出して
executeしないんですかね?
080277204/08/16 11:52ID:???
>>777
いや、俺にマジレスされてもさ・・・>>771に聞いたんだから。
0803nobodyさん04/08/16 17:39ID:YMFVNVGs
質問させてください。
telnetにて正常動作したperlスクリプトをCGIとして動かすと
エラーになってしまいます。

ログをたどると以下のようになってます。
Can't locate CGI.pm in @INC (@INC contains:
/usr/home/xxx/usr/local/lib/perl5/5.8.4/i386-freebsd
/usr/home/xxx/usr/local/lib/perl5/5.8.4
/usr/home/xxx/usr/local/lib/perl5/site_perl/5.8.4/i386-freebsd
/usr/home/xxx/usr/local/lib/perl5/site_perl/5.8.4
/usr/home/xxx/usr/local/lib/perl5/site_perl
.) at /usr/local/etc/httpd/htdocs/board/index.cgi line 6.
BEGIN failed--compilation aborted at /usr/local/etc/httpd/htdocs/board/index.cgi line 6.
[Mon Aug 16 10:19:51 2004] [error] [client 138.243.201.4]
Premature end of script headers: /usr/local/etc/httpd/htdocs/board/index.cgi

で、不可解に思って、なんでCGI.pmがないんやろかと@INCのフォルダを
洗いざらい調べてみたら、なんときっちり存在しているのです。

なにか他に思いつく原因ってあるでしょうか?
ちなみにperl5.8.4です。
0804nobodyさん04/08/16 17:48ID:???
>>803
@INC の各パスやファイルのパーミッション
0805nobodyさん04/08/16 17:59ID:???
>>804
パーミッションは755です。ちなみに705にしてもエラーが出て、
上記のログがApacheのエラーログに追加されます。
またpmモジュールは読めさえ出来ればパーミッション関係なかったような。
ちなみにpmモジュールのパーミッションは444でした。

@INCの各パスとはどういうことでしょうか?
CGI.pmは/usr/home/xxx/usr/local/lib/perl5/5.8.4に確かに存在していました。
080680304/08/16 18:01ID:???
>>805
名前とE-mailを入れ間違えた。805=803です。
0807nobodyさん04/08/16 18:29ID:???
/usr/home/xxx/ の中に usr/local/lib/perl5/5.8.4 があるって事?
おかしくない?よくわからんけど。
0808nobodyさん04/08/16 18:33ID:???
>>805
/usr
/usr/home
/usr/home/xxx
/usr/home/xxx/usr
/usr/home/xxx/usr/local
/usr/home/xxx/usr/local/lib
/usr/home/xxx/usr/local/lib/perl5
/usr/home/xxx/usr/local/lib/perl5/5.8.4
これらディレクトリ自体のパーミッションが CGI の実行ユーザに対して
開いているか (読取及び実行権限があるか) ? という事。
0809nobodyさん04/08/16 18:34ID:???
たぶん自分の home に自分で入れたんだろう

一番疑われるのは、既出の通りファイルまたはディレクトリのパーミッションが
apache の実行権限で読めないようになってる、という可能性だが、
それじゃないなら、なんだろうなあ
まさか apache が実行時に chroot されてるとかか?
apache の管理人に相談した方がいいような気もする
0810nobodyさん04/08/16 18:55ID:???
>>803
スレ違い
0811nobodyさん04/08/16 18:58ID:???
「Apache(から呼び出されたPerl)が/usr/home/xxxに入れない」に一票
0812nobodyさん04/08/16 20:25ID:???
MD5暗号化、照合ライブラリってないものでしょうか。
cryptがサーバ対応してなくてMD5使えないもので、
ありましたら使い方等教えていただけますと幸いです。
0813nobodyさん04/08/16 20:57ID:???
>>812
http://search.cpan.org/search?query=MD5&mode=all
0814nobodyさん04/08/16 22:50ID:???
>>805
ていうかなんでおまいはサバカンに問い合わせないんだ?
081580304/08/16 23:04ID:???
>>814
問い合わせてみました、返答ですが
「本サーバは若干特殊でお客様のホームデレクトリが仮想ルートと
なっております。(だからホームの下に元々usrとかetcとかあるわけです)
@INCの値を/usr/home/xxx/usr/local/lib/perl5/5.8.4から
/usr/local/lib/perl5/5.8.4に書き換えれば動作します」
とのこと。@INCがおかしくてlib.pmにもアクセスできないのに
どうやって@INCを書き換えればよいのだろうか…。
0816nobodyさん04/08/16 23:54ID:???
>>815
use の仕組みを理解して lib.pm が何をしているか
読み解けばいいんじゃないか。

でもおじちゃんが君の勉強の機会を奪ってあげよう。
BEGIN { unshift @INC, '/usr/local/lib/perl5/5.8.4' }
0817nobodyさん04/08/17 01:06ID:???
>>816
間違っちゃいないが、それはそれで非効率的だな。
原因の根源から断つ考えは出来んのか?
0818nobodyさん04/08/17 01:17ID:???
まともな鯖に引っ越す。
これだな、うん。
0819nobodyさん04/08/17 01:33ID:???
>>817
突然態度がでかくなったな
082080304/08/17 03:32ID:???
>>816
なるほど、@INCも所詮はただの配列だからスクリプト側で
勝手に追加すれってことですね。すこし効率悪いかなとも
思ってましたけど、いざ使ってみると1箇所追加するだけでも呼び出す
ライブラリ全部に反映されるみたいなので結構いい感じです。

ご教授ありがとうございます。
0821nobodyさん04/08/17 13:03ID:???
if(判断式1){
DispError("ERROR") if (判断式2);
$count++;
}

なんですが、
これは判断式1がtrueの場合DispError(ERROR)が発生するとして、
その後の判断式2はどうかかわるのですか?
0822nobodyさん04/08/17 13:34ID:???
>>821
http://www5a.biglobe.ne.jp/~n_rieko/perl/6.htm#6-7
0823nobodyさん04/08/17 13:54ID:4w98o0dA
Perlでモジュールを使ったオブジェクト指向風プログラミングを
始めたんだけど、文字列の変数展開で、
"$Foo->bar()"
みたいな事出来ないかな?

Rubyだと
"#{Foo.bar}"
という書き方が出来るんだけど。。。
0824nobodyさん04/08/17 13:57ID:???
文字列の変数展開は
"$Foo->{bar}"

$Foo->bar() はメソッド
0825nobodyさん04/08/17 13:58ID:???
>>823

print "${\($Foo->bar())}";
print "@{[$Foo->bar()]}";
082682104/08/17 14:01ID:???
>822
ありがとうございます、特殊な書き方なんですね。
0827nobodyさん04/08/17 14:04ID:4w98o0dA
なるほど!、サンクスコ
>>825
0828nobodyさん04/08/17 14:15ID:???
でも>>825の書き方って、見て呉れが悪いのが嫌なんだよな
082982504/08/17 16:06ID:???
>>828
ついでに書くのが面倒なのもネックだね
0830nobodyさん04/08/17 16:18ID:???
print $Foo->{bar} じゃ不満?

printf "%s", $Foo->{bar};とか
print "", $Foo->{bar} . "";とか
いくらでも書き方はあるけど?

で、>>824に突っ込むなら、Class::Accessor使ってみたら?と。
0831nobodyさん04/08/17 16:39ID:???
>>830
ヒアドキュメントを考えてるんじゃないか?
0832nobodyさん04/08/17 16:51ID:???
>>831
ああ、あんまり使わないからわかんなかった。
漏れの場合は825の2つ目のを使うけど。

ヒアドキュメントを使う場って、長いHTMLとかSQLとか書くときがほとんどだけど、
前者はTemplate、後者はプレースホルダーとかsprintfとか使うから、
使うとしても、内部に変数を埋め込むことは少ないなぁ。
TMTOWTDIとすれ違いなのでここまでにしとく。
0833nobodyさん04/08/17 16:59ID:???
>>832
>TMTOWTDI
これ何?ネオマスぐらい気になるな;
083483204/08/17 17:02ID:???
>>833
釣れるか?
083583304/08/17 17:38ID:???
>>834
は?どういうこと?
最近Web製作板で、ネオマスって言葉を質問してるやつがいて誰もわからなかったんだよ。
で、お前のアルファベットんp羅列も同じようにわかんねって話なんだが?
0836nobodyさん04/08/17 17:43ID:???
>>833
ぐぐればわかるよ。
まあ気にすんな。
時々、ああやって見慣れる言葉を書いて得意気になってる
いつものウンチクオタクだろうから。
083783204/08/17 17:44ID:???
釣りじゃないのね。PerlのスレでTMTOWTDIがわからんという人間がいるとは
本気で思わなかったんだよ〜
There's More Than One Way To Do It.
Perlの標語だよ。発音はtim-todayらしいね。詳しく知りたかったらググってみそ。
0838nobodyさん04/08/17 17:55ID:???
初心者スレですから
0839名無しさん04/08/17 19:11ID:s4X1hHlI
Perlのセッション管理ってDBとかファイルとかに書き込まないとだめなんですか?
メモリ上だけでやる方法教えてください。

あと、JavaのServletでインスタンスフィールド作ると
スレッドセーフじゃなくなって他のセッションの情報とか混ざっちゃたりするからダメ
みたいなそういう心配ってしなくても大丈夫ですか、Perlは?
0840nobodyさん04/08/17 19:59ID:???
>>839
無理。
mod_perlで変数を初期化しなければ・・・みたいなアクロバティックな
方法もあるけど、初期化しないという保証はないからお勧めできない。
PHPとかのセッション管理も実際はファイル書き込み以外の何物でもない。

後Servletは知らないけど、CGIのPerlならプロセスだから問題ない。
mod_perlだと、グローバル変数に適当にセッションの情報を放り込むと、
混ざらないとは言い切れない。
0841nobodyさん04/08/17 20:05ID:???
>>839
RAMをマウントしてファイル作るとか。
0842名無しさん04/08/17 20:10ID:s4X1hHlI
ありがとうございます!

あと日本語が変でごめんなさい。
JavaのServletではそういうことやっちゃダメで
心配しなきゃなんないんだけど、
Perlでそういう感じの心配しなきゃならないとこってありますか?
ってことを書いたつもりでした。ごめんなさい。
0843nobodyさん04/08/17 21:08ID:???
SJISで書かれたフォームから入力された文字をEUCコードの
プログラムで受け取っているのですが、変な文字化けを起こして
しまいます。

jcode::convert(\$form{text}, "euc");
ですと、$form{text}が「てすと」の場合は文字化けを起こさず、
「テスト」の場合は文字化けがおこります。
「テ」の場合は文字化けしません。

これを jcode::convert(\$form{text}, "euc", "sjis");
に明示的に指定すると、「テスト」の文字化けは直りますが、
今度は「てすと」が化けるようになってしまいます。

ループにはまってしまったので、質問させていただきました。
どうか宜しくお願いいたします。
084484304/08/17 21:21ID:???
すみません、解決したっぽいです。
そのまえのフォーム受け取りルーチンに問題があったっぽいです。
スレ汚しすみませんでした。
0845nobodyさん04/08/17 23:50ID:???
>>839
内部状態をhiddenで渡す。勝手に書き換えられないように、チェックサム付けとく。
084679804/08/17 23:56ID:b/+hcgJE
mysqlにDBIを使って接続して、フォームからのクエリを埋め込んだSQL文を発行したいときは
プレースホルダを使用して、LIKE用に%と_をエスケープしておけばそれ以上サニタイジングは
何もしなくても安全ですか?

色々読んだところとりあえずそれで問題はないようなのですが、一応このスレのみなさんに
最終確認して自信を持ちたかったので投稿しました。

どうぞお願いします。
0847nobodyさん04/08/17 23:58ID:???
>>845
チェックサムって何や?まあ何でもいいけどさ。
0848nobodyさん04/08/18 16:37ID:FTnHFAXj
#1番目の数字###############
$rule1 = rand 20;
$data1 = int($rule1) + 1;
#2番目の数字###############
$rule2 = rand 20;
if ($rule2 <= $data1) {
$rule2a = rand 20;
}
$data2 = int($rule2a) + 1;
ランダムで選んだ2つの数字を$data1より$data2のが大きな数字にしたいのですが
うまく動作しません、どうすればよいのでしょうか?

0849nobodyさん04/08/18 16:41ID:???
$data2を先に選んでそこからランダムな値を引いて$data1に入れるとか
0850nobodyさん04/08/18 16:51ID:???
>>848
$rule1 = 1 + int rand 20;
do { $rule2 = 1 + int rand 20 } while $rule1 == $rule2;
$rule1 < $rule2 or ($rule1, $rule2) = ($rule2, $rule1);
print "$rule1 < $rule2";
0851nobodyさん04/08/18 17:03ID:???
>>849 でも >>850 でも行けるとは思うが
得られる数値の分布は >>849>>850 で大きく異なるので
目的に合わせて選択されたい
085284804/08/18 17:30ID:???
>>849-851
なるほど、ありがとうございました
しかし>>850のdoってなんだろう?
わからないけど動いてる
勉強します(涙)
0853nobodyさん04/08/18 18:49ID:???
>>839
systemV系のosなら共有メモリが使えるよ。 see also IPC
085484604/08/18 18:50ID:???
お願いしますm(__)m
0855nobodyさん04/08/18 19:25ID:???
>>854
「色々読ん」で問題はないようなんだったら問題ないんだろ。
問題があるなら色々読んでたら見つかるはず。
0856nobodyさん04/08/18 21:48ID:???
>>855には答えられませんでしたw

まあ完璧か?と聞かれるとそこまで自信が持てなくて返事ができなかったりする;
だってセキュリティ問題ってそういうもんだろ?後は↓こいつが見事な答えをだすんじゃないか?
0857nobodyさん04/08/18 22:06ID:???
俺の話題はDBI確定かよ!w
まあいいけど。

SQLインジェクションが怖いのは、例えば発行してるのがSELECT文なのに
INSERTとかDELETEとかDROPとかCREATEとかそういうのを使われること。
そういう点では、プレースホルダ使えば”ほとんど”問題はない。
ただ、当然のことだが、SELECT * FROM some_table WHERE ? = ?
みたいなSQLを書いて、?にテーブルのカラム名を入れる〜みたいなのだとまずい可能性が高い。
つまり、数値だとか文字列をエスケープすると言う点ではいいんだけれど、
動的にSQLを作成し、なおかつその値をユーザーからの入力に任せるとダメ。
この辺りのチェックは絶対に必要になる。

それから、他人の情報を盗まれたり〜という点に置いての
チェックなんかも、ユーザーからの入力じゃなくて、セッション管理とかしないとね。
この辺になると、インジェクションというのとはちょっと違うけれど。
0858nobodyさん04/08/18 22:27ID:???
>>846
お前さ。2chで大丈夫だよといわれるだけで安心できるの? いくらでも逝ってやるよ。
それで完璧。絶対に大丈夫。

>>857
> 動的にSQLを作成し、なおかつその値をユーザーからの入力に任せるとダメ。
それは設計が悪い。
085979804/08/18 23:11ID:???
みなさんありがとうございます!

>>857
注文を保存するだけのものなので、
INSERT tbl_name SET name=?
のような使い方しかしないつもりです。

>>858
2ちゃんでというか、自分でできる限り調べるのと+このスレの人の回答を
足し合わせると安心できます。
0860nobodyさん04/08/18 23:16ID:???
おまいら自分でフォームから渡された文字列の文字コードしらべられるか?
モジュール||ライブラリ なしで。

できるやつってすげえな。まあjcode.plの中身を見ちゃえばわかっちゃうけど、
見ないでわかっちゃうやつは
0861nobodyさん04/08/18 23:26ID:???
どうでもいいことだ
0862nobodyさん04/08/18 23:29ID:???
>>860
目で見ればわかる。なれた。
SJISをEUCのつもりでSJISに変換したのもわかる。

ただなぁコード書けって言われても・・・その、なんだ、困る
0863nobodyさん04/08/18 23:44ID:???
parlで作ったプログラムA、B、C
このABCを管理する為のperlプログラムDを作りたいと思っております。

具体的には
DにてABCを起動
ABCを監視し、終了したプログラムに対して再起動やログなどを残す。

プログラムの起動や終了状態を取得するには
system関数を使おうと思っているのですがsystem関数では一つの子プロセスが
終了するまで、親プロセスには制御が戻らないのでどうしたものかと
悩んでおります。

アドバイスなど頂ければ幸いです。
よろしくお願いします。
0864nobodyさん04/08/19 00:02ID:???
fork
つーか戻り値ないsystemを使うのか・・・
086586304/08/19 00:25ID:???
>>864
ありがとうございます。
forkについて調べてみます。
0866nobodyさん04/08/19 00:27ID:???
forkだけじゃだめなんだが
0867nobodyさん04/08/19 00:41ID:???
>>863
system "A.pl &";
system "B.pl &";
system "C.pl &";
086885704/08/19 01:23ID:EPjrU+Ei
>>858
> それは設計が悪い。
その通り!
でも、そういうことを聞いてるんだと思ったんだが・・・
086986304/08/19 01:25ID:???
fork・・普通に制御構文のリファレンス読む感じでは理解できませんね。
http://66.102.7.104/search?q=cache:-1Ta6TXcnLcJ:naoya.dyndns.org/doc/perl_memo.txt+fork%E3%80%80pid%E3%80%80perl%E3%80%80waitpid&hl=ja&lr=lang_ja

ここが一番解りやすいように書いてくれてるのですが
systemとforkの使い方の流れみたいなのが今一理解できていません。

>>867さんが
system "A.pl &";
system "B.pl &";
system "C.pl &";
と書いてくれていますが、アホな漏れにもう少し補足していただければ幸いです。

書き忘れましたが
perlはActivePerl-5.6.1.635-MSWin32-x86.msi
win2000sp4です。

なのでフラッシュする必要はないと思うのですが・・あってますでしょうか。
0870nobodyさん04/08/19 01:54ID:???
>>869
そ、それはすげー盲点だった > W2K
不可能ではないが、どちらかと言うと、潔く諦めることをお勧めする
087186304/08/19 02:38ID:???
レスありがとうございます。
今調べていると
Win32システム用Perlで実装されていない関数
にforkが入ってました・・

>>870
>>不可能ではないが、どちらかと言うと、潔く諦めることをお勧めする

こう言うことでしょうか?
確かめる為に実際にforkを入れてみるとちゃんとプロセスが増えました。

dos窓がもう一つ増えるわけではありませんが、dos窓一つにperlプロセスPIDが
二つ。

本当はdos窓二つ、perlプロセス2つにしたいのですが。

forkは自分の分身を子プロセスとして作り出すのでDという管理プログラムを
使ってA、B、Cというプログラムを動かすには
Dのコードの中にABCのコードも含めて、子プロセスの場合はABCそれぞれの
ルーチンを機能させるみたいなことにしないといけないのでしょうか?

全く別のプログラムを起動させて、そのPIDを監視と言うか取得できる
方法があれば涙モノなのですがそう上手くはいかないようですね・・
0872nobodyさん04/08/19 04:48ID:???
>>871
http://search.cpan.org/modlist/Microsoft_Windows
■ このスレッドは過去ログ倉庫に格納されています