[過去ログ]
Perlについての質問箱 64箱目 (1002レス)
Perlについての質問箱 64箱目 http://mevius.5ch.net/test/read.cgi/tech/1548981877/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
934: デフォルトの名無しさん [sage] 2021/03/07(日) 10:45:56.10 ID:Q92Mc+WL 安定して動かないならバグっている だいたい動くけど、ごく稀に動作がおかしい、ということがforkはある forkがコケても動くような仕組みにすればok http://mevius.5ch.net/test/read.cgi/tech/1548981877/934
935: デフォルトの名無しさん [sage] 2021/03/07(日) 10:50:58.30 ID:x9JK9zFw そもそもWindows APIはfork()をサポートしてない。 http://mevius.5ch.net/test/read.cgi/tech/1548981877/935
936: デフォルトの名無しさん [sage] 2021/03/07(日) 11:48:43.53 ID:Anqe+9Rf >>934 ありがとう。 メモリ使用量が低いと成功。 firefoxでもタブ1枚ぐらいなら成功。 firefoxでタブ(yahoo.com)10枚開くと、確実にハング。 ラクダ本にも、失敗(戻り値undef)の対処法が書いてありますね。 WindowsOSがらみなので、イロイロありそうなのは察します。 でも、forkを呼び出したらハングして帰ってこないからなぁ。 コケるというよりは、forkを呼び出さない: if( $can_fork ) {fork;} ってな書き方が必要になってしまう。 http://mevius.5ch.
net/test/read.cgi/tech/1548981877/936
937: デフォルトの名無しさん [sage] 2021/03/07(日) 11:53:44.14 ID:Anqe+9Rf 追記: perlスクリプトとfirefoxは関係ありません。 単に、デスクトップで調べものしながら、コマンドプロンプトでperlインタプリタ を起動して作業しているだけです。連投失礼しました。 http://mevius.5ch.net/test/read.cgi/tech/1548981877/937
938: デフォルトの名無しさん [] 2021/03/07(日) 12:10:59.62 ID:3xq9+JKJ ActivePerl の Windows 版では fork() がエミュレーションされているらしい。 実際に呼び出してみるとスレッドがひとつ増える。 中ではおおかた CreateThread() でもしてるんだろう。 http://mevius.5ch.net/test/read.cgi/tech/1548981877/938
939: デフォルトの名無しさん [sage] 2021/03/07(日) 12:24:40.47 ID:xy+MS7Fg windowsで安定動作させたいならforkを使わずに自分で別スレッドか別プロセス立てるのが吉 http://mevius.5ch.net/test/read.cgi/tech/1548981877/939
940: デフォルトの名無しさん [sage] 2021/03/07(日) 14:22:59.45 ID:Anqe+9Rf >>938 perldocによると、ActiveStateとMSが頑張ったらしいよ。 エミュあつかいとのことです。 >>939 ありがとう。 スレッドでするわ・・・さすがにハングはだめだわ(^^; http://mevius.5ch.net/test/read.cgi/tech/1548981877/940
941: デフォルトの名無しさん [sage] 2021/03/07(日) 14:48:48.37 ID:Q92Mc+WL forkとか再帰呼び出しとか、魔術的で楽しいけど、大抵罠にはまる http://mevius.5ch.net/test/read.cgi/tech/1548981877/941
942: デフォルトの名無しさん [sage] 2021/03/07(日) 17:38:53.17 ID:quYd9iFF 再帰はええやろ。 forkはもともとUNIX用で、Windowsとは相性が激悪なだけやから、しゃあない。 http://mevius.5ch.net/test/read.cgi/tech/1548981877/942
943: デフォルトの名無しさん [sage] 2021/03/07(日) 17:49:12.06 ID:Q92Mc+WL 階層ディレクトリを辿る、みたいなとこに再帰を使うと止まらなくなったりする 絶対止まると保証されてるとこにしか使えなくて、そういうのは別に再帰でなくてもやれる 隅々までどうなってるか判らないものに再帰は威力を発揮するけど、 そういうのは往々にして停止性が保証されない http://mevius.5ch.net/test/read.cgi/tech/1548981877/943
944: デフォルトの名無しさん [sage] 2021/03/07(日) 18:11:41.00 ID:eIiM+J9a それはあんたが無能だから http://mevius.5ch.net/test/read.cgi/tech/1548981877/944
945: デフォルトの名無しさん [sage] 2021/03/07(日) 18:18:17.98 ID:x9JK9zFw Perlと関係ない話はよそでどうぞ http://mevius.5ch.net/test/read.cgi/tech/1548981877/945
946: デフォルトの名無しさん [sage] 2021/03/07(日) 23:39:46.89 ID:quYd9iFF >>943 再帰終了をちゃんとできないヤツは、ループ終了もできないやろ。w ディレクトリうんぬんに限って言えば、ファイルシステムへの知識が足りないとかか。 リンク系の。 http://mevius.5ch.net/test/read.cgi/tech/1548981877/946
947: デフォルトの名無しさん [sage] 2021/03/07(日) 23:53:02.15 ID:Q92Mc+WL 軽く考えてるけど、プログラムの停止性ってもっそい奥が深い ゲーデルの不完全性定理と密接に絡んでる http://mevius.5ch.net/test/read.cgi/tech/1548981877/947
948: デフォルトの名無しさん [sage] 2021/03/08(月) 00:03:00.68 ID:RDgJTpCR tarのhオプションってよくできているよな 無限ループに陥りやすいが http://mevius.5ch.net/test/read.cgi/tech/1548981877/948
949: デフォルトの名無しさん [sage] 2021/03/08(月) 00:23:56.56 ID:tQicr2bh 再帰処理は考えてるの楽しいよな 実装するかとなると状況次第 http://mevius.5ch.net/test/read.cgi/tech/1548981877/949
950: デフォルトの名無しさん [sage] 2021/03/08(月) 01:47:35.66 ID:6lKYXbK2 >>947 バグが存在しない証明は超難しいから、ふつうやらない。 かわりに、テストを必要なだけする。 それだけのこと。 原理とやらは学者に任せておけばいい。 http://mevius.5ch.net/test/read.cgi/tech/1548981877/950
951: デフォルトの名無しさん [sage] 2021/03/08(月) 10:04:20.07 ID:XzCJxGl3 ggl先生に "perl dir tree" で検索かけたら自作ページが多いね。 安心安全鉄板ライブラリとかってあるかな? 素人考えでなんだけど・・・OS別、FS別なんてあるんかの。 http://mevius.5ch.net/test/read.cgi/tech/1548981877/951
952: デフォルトの名無しさん [sage] 2021/03/08(月) 10:17:22.69 ID:SORPad+v 親にリンクしていてループするのが困るので、 全部の子に対してカウンタを持たせる、くらいしか回避方法が無いんだよな それだと再帰でやってるうまみが無くなってしまう http://mevius.5ch.net/test/read.cgi/tech/1548981877/952
953: デフォルトの名無しさん [sage] 2021/03/08(月) 12:03:45.46 ID:JySUELLY 素直にFile::Find使っとけ http://mevius.5ch.net/test/read.cgi/tech/1548981877/953
954: デフォルトの名無しさん [sage] 2021/03/08(月) 12:34:19.76 ID:SORPad+v dir /s の結果を使うのが一番楽 http://mevius.5ch.net/test/read.cgi/tech/1548981877/954
955: デフォルトの名無しさん [sage] 2021/03/08(月) 16:27:27.25 ID:3P7OMB5d File::Findは処理速度が遅いのが難 http://mevius.5ch.net/test/read.cgi/tech/1548981877/955
956: デフォルトの名無しさん [sage] 2021/03/08(月) 17:21:12.95 ID:6lKYXbK2 >>952 リンクを不用意にたどるな。 既存コマンドでもオプションにしがちだし、ディレクトリ構成によっては死ぬくらいだから、しゃあない。 http://mevius.5ch.net/test/read.cgi/tech/1548981877/956
957: デフォルトの名無しさん [sage] 2021/03/08(月) 17:24:47.95 ID:6lKYXbK2 >>955 何と比べて? no_chdirを指定したりしたらマシになったりしない? http://mevius.5ch.net/test/read.cgi/tech/1548981877/957
958: デフォルトの名無しさん [sage] 2021/03/08(月) 17:40:53.14 ID:SORPad+v ディレクトリならどこかにある実体のコピーだろうから、リンクなんか無しで済むけど、 より一般化したリスト構造だったら辿らない訳にいかない だから、事前にループしていないことを確認してから処理することになって、 そのテストがループにはまる http://mevius.5ch.net/test/read.cgi/tech/1548981877/958
959: デフォルトの名無しさん [] 2021/03/08(月) 20:06:16.14 ID:3P7OMB5d >>957 試してみたが、no_chdirは関係ない。 File::Findは、dir /S /B コマンドのパイプ読み取りに比べて、3倍も時間がかかる。 File::Findは遅いだけでなくコールバックでユーザー変数を扱えない欠点があるから、私はFile::Findを使わない。 http://mevius.5ch.net/test/read.cgi/tech/1548981877/959
960: デフォルトの名無しさん [] 2021/03/08(月) 21:30:38.88 ID:3P7OMB5d File::FindはUnix系OSで使う場合は find コマンドのパイプ読み取りと同等か少し速い。 File::Findが明確に遅いのはWindows向けにビルドされたPerlの場合のみ。 http://mevius.5ch.net/test/read.cgi/tech/1548981877/960
961: デフォルトの名無しさん [sage] 2021/03/08(月) 22:05:40.64 ID:6lKYXbK2 >>960 WindowsのどのPerl? ひょっとしてCygwin版? ActivePerlやMSYS2版ならマシだったり? http://mevius.5ch.net/test/read.cgi/tech/1548981877/961
962: デフォルトの名無しさん [] 2021/03/08(月) 22:39:10.09 ID:3P7OMB5d >>961 残念ながらネイティブに最適化されているはずのActivePerl や Strawberry Perl でFile::Findが遅い。 原因は知らないけどWin32APIの使い方が良くないからだと思う。 http://mevius.5ch.net/test/read.cgi/tech/1548981877/962
963: 532 [sage] 2021/03/09(火) 00:11:34.07 ID:jxvXMO9/ $^WIN32_SLOPPY_STAT じゃね? File::FindはWindowsだと、SJISで全角「構」などの2バイト目が\(0x5c)のフォルダに遭遇すると 無限loopしたり誤動作するから、結局Wndowsでフォルダ階層を再帰的にたどるには utf8化したperl sourceで自分でopendir, readdirして、encode, decodeせにゃならん。 http://mevius.5ch.net/test/read.cgi/tech/1548981877/963
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 39 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.010s