Perlについての質問箱 63箱目 at TECH
[2ch|▼Menu]
[前50を表示]
200:デフォルトの名無しさん
16/06/12 18:22:13.25 wrakKGfW.net
プログラムもだけど$|=1;使って動作確認してたり、
バッファリング無し、バッチ処理で毎晩10GB1行毎の書き込みは流石にまずいんじゃない?
185も$|=1;使ったらどんな動作になるんだろ?
187はコードが見やすくなるからテストでは結構使ってる
そのまま忘れてて大きなファイルを解析させてたりもある
みんな185形式で書いてるの?

201:デフォルトの名無しさん
16/06/12 18:23:39.84 wrakKGfW.net
速度も考えて最近は配列に貯めてからすることがある
ただWindowsだとすぐout of memoryでる

202:デフォルトの名無しさん
16/06/12 18:58:39.76 ve4Ih4ce.net
まあ自分のPCならサブマシンでもメモリ32Gあるし別に・・・って感じだが

203:デフォルトの名無しさん
16/06/12 19:00:15.13 ve4Ih4ce.net
でもPerlってメモリの量が異常に増えるんだよね
10MBのデータを読み込んでごにょごにょしてたらなぜかメモリ200MBになってたり
普通にネイティブな言語使ったほうがいいのでは

204:デフォルトの名無しさん
16/06/12 21:45:18.08 0HO5/jac.net
どんなレス考えても、罵倒しか思い浮ばん。
HDDの負担以前の問題だよ。
open/closeを行数分繰替えすのが、
どれだけ時間の無駄(=マシンに負荷がかかる)か実例貼っとく。
$ perl -le ' sub ps { print `ps ux $$`}; ps ; for( 0 .. 9999999 ){ open my $h, ">>", "test.txt" ; print {$h} "h" } ; ps ;'
USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND
XXXXX 36471 13.2 0.1 2445400 3344 s002 S+ 8:24PM 0:00.16 perl -le sub ps { print `ps ux $$`}; ps ; for( 0 .. 9999999 ){ open my $h, ">>", "test.txt" ; print {$h} "h" } ; ps ;
USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND
XXXXX 36471 22.5 0.0 2445400 1664 s002 S+ 8:24PM 24:21.88 perl -le sub ps { print `ps ux $$`}; ps ; for( 0 .. 9999999 ){ open my $h, ">>", "test.txt" ; print {$h} "h" } ; ps ;
CPU time で24分だけど、実際には、9時半まで処理掛かってる。

205:デフォルトの名無しさん
16/06/12 21:49:23.64 0HO5/jac.net
$ perl -le ' sub ps { print `ps ux $$`}; ps ; open my $h, ">", "test.txt" ; for( 0 .. 9999999 ){ print {$h} "h" } ; ps ;'
USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND
XXXXX 40081 7.0 0.1 2445400 3324 s002 R+ 9:36PM 0:00.09 perl -le sub ps { print `ps ux $$`}; ps ; open my $h, ">", "test.txt" ; for( 0 .. 9999999 ){ print {$h} "h" } ; ps ;
USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND
XXXXX 40081 96.8 0.1 2445400 3340 s002 S+ 9:36PM 0:03.08 perl -le sub ps { print `ps ux $$`}; ps ; open my $h, ">", "test.txt" ; for( 0 .. 9999999 ){ print {$h} "h" } ; ps ;
$ ls -alh test.txt
-rw-r--r-- 1 XXXXX staff 19M 6 12 21:36 test.txt
今の時代の強力なマシンだろうが、こんだけ負担をかける事は、一昔前の人間だったら常識の範囲。
ちなみにフラッシュしようが、出力される量は変動しないんだから、
HDDの負担は変らん。と何回指摘されりゃ気が済むんだ?

206:デフォルトの名無しさん
16/06/12 21:54:39.02 0HO5/jac.net
>>201,>>202は、>>197へ。

207:デフォルトの名無しさん
16/06/12 23:18:14.97 wrakKGfW.net
>>202
今の時代マシーンパワーに物言わせてと言うことが意外と出来きてしまう
勿論、限度はあるけど
朝までに終わればいいわ程度で一度コード作ったらあとは触らないとかね
それと、昔デフラグし過ぎるとHDDが壊れるとか言われてた
出力される量でHDDの劣化が決まるって話だけど、細かいファイルを大量に書いたり作成するのはHDDにとって過大な負担になるんじゃない?
例えばだけど、100GBのファイル一つ書き込むのと、1バイトのファイルを100GB分毎回書き込むのでは違うと思うのだが?
>>199
配列をアホみたいに増やしたらメモリー(SSDで仮想いくらでも増やせるし)が一杯になる前に落ちる

208:デフォルトの名無しさん
16/06/12 23:41:21.09 0HO5/jac.net
>>204
意味不明。
細かいファイルの件なんか、俺のコードにも、>>186にも>>188にも
全く触れられてないんだけど?
百歩譲って、断片化の可能性が高まるのは、open/close を繰替えす
>>188のコード(膨大な処理時間中に他のIOが割って入る)だが、
擁護してんのか晒してんのかも不明。

209:デフォルトの名無しさん
16/06/12 23:49:21.59 xguVhByI.net
>>202
> ちなみにフラッシュしようが、出力される量は変動しないんだから、
> HDDの負担は変らん。と何回指摘されりゃ気が済むんだ?
出力される量は変動しなくても
書き込み回数は増えるじゃん。
フラッシュって何をやってるのか知らないの?
HDDに書き込まないでメモリに蓄えているものを
書き出す処理だぞ。
だからHDDの負担は増える。

210:デフォルトの名無しさん
16/06/12 23:52:30.66 xguVhByI.net
ちなみに、出力される量も実際に変動する。
HDDに限らないが通常書き込みっていうのは
ブロック単位で書き込まれる。
HDDの場合は512バイトだったり最近は4Kバイトだったりする。
1バイトの書き込みでも4Kバイト書き込まれるわけだ。
だからデータ量が1000バイトだった場合、
フラッシュ無しだと4KBの書き込みだが
1バイト毎にフラッシュすると、4KB×1000=4MBの書き込み量になる。
ファイルサイズはどちらも同じ1000バイトであっても
それを作るための書き込み量は違う。

211:デフォルトの名無しさん
16/06/13 00:08:38.69 GclKUW1b.net
>ちなみにフラッシュしようが、出力される量は変動しないんだから、
>HDDの負担は変らん。と何回指摘されりゃ気が済むんだ?
この二行は、あなたのご指摘通り。
訂正します。
>>188
>$| = 1;
は、*OUTのフラッシュになんの関与もしていないけど。

212:デフォルトの名無しさん
16/06/13 00:32:22.24 Yqh2uzvZ.net
>>205
205-206が言いたいこと言ってくれた
擁護でも晒すわけでもなく、より適切な方法が見つかれば良いと思う
185にしても、もっとバッファリングしてやればHDDへのIOが減りHDDの負担は減るんじゃないかなと
標準だと4/8KBでフラッシュしてるよね、これを100MBにすればHDDへの負担はぐっと減りそう
今時のキャッシュ大きめのHDDでどの程度意味があるのか分からないし
寿命に影響するかどうかは分からないけど毎日繰り返す処理なら意味があるかも
>>208
そうなの?って思って調べてみた
URLリンク(mikeda.hatenablog.com)
みたらselectしないと効かないっぽいな

213:デフォルトの名無しさん
16/06/13 01:15:56.79 w1lAZiF2.net
夏場なんで、while ブロックの先頭に
sleep 2 unless $. % 10000;
を入れるとよい。2つの数字は調整してみてくれ。

214:デフォルトの名無しさん
16/06/13 15:19:04.03 bjrR9GHC.net
#!/usr/bin/perl -w
use strict;
use File::Path;
use IO::File;
sub diskstat {
 system(

215:デフォルトの名無しさん
16/06/13 16:48:17.11 bjrR9GHC.net
URLリンク(ideone.com)
このプログラムの意図 : >>186>>188 の違いがディスクアクセスに及ぼす影響の検証。
明らかに >>186 よりも >>188 の方がシステムコールの回数が多い。
しかし、それだけでディスクアクセスに違いが出てくるわけではない。
実行時間を同程度にしてみたらどうなるだろうか。
実行する前に
grep sda5
の sda5 を環境に合わせて書き換えてほしい。

216:デフォルトの名無しさん
16/06/14 01:15:43.18 M6DJWkXG.net
> 実行時間を同程度にしてみたらどうなるだろうか。
実行時間を同程度にしたら、遅い方の書き込み量が減るから
比較にならんだろw

217:デフォルトの名無しさん
16/06/14 20:04:47.85 UhtJW9b9.net
プログラムを見てくれてないのかな……だとしたらその時点でもう対象外なんだけど。
ろくに見もしないで何を想像したの?

218:デフォルトの名無しさん
16/06/15 01:35:53.40 7O5/ia9k.net
そう言えば古いDiffソフト(AikoWin)やたらHDDガリガリ音鳴ってたな
あれ読み出しが少しずつでHDDに相当の負担が掛かるとか聞いたことがある
細かいファイルを書き込むのも良くないけど、自分でソフト作る時にには
呼び出しも気を付けないとまずいんだよなー

219:211
16/06/15 12:03:11.68 rzJhZO2i.net
もう少しマシなプログラムを書いてみたよ。
URLリンク(ideone.com)
Linux 限定だけど無修正で実行できる。
実行時間は 5 分くらいかかるよ。正確なデータを得るにはそうした方がいいみたいなんだ……

220:デフォルトの名無しさん
16/06/15 13:23:28.38 rzJhZO2i.net
自分の実行結果を書いておくよ。
sub f_a {
 my $fh = IO::File->new( &genfn(),'>') || die( $!);
 $fh->autoflush( 0);
 $fh->print('h') foreach 0 .. 65535;
 $fh->close;
}
sub f_b {
 my $fh = IO::File->new( &genfn(),'>') || die( $!);
 $fh->autoflush( 1);
 $fh->print('h') foreach 0 .. 65535;
 $fh->close;
}
sub f_c {
 my $fn = &genfn();
 foreach ( 0 .. 65535) {
  my $fh = IO::File->new( $fn,'>>') || die( $!);
  $fh->print('h');
  $fh->close;
 }
}
これらを 16 回ずつ実行した結果、f_a,f_b はそれぞれ 2232 セクタ、
f_c は 2224 セクタ書き込んだみたいだよ。もちろん書き込んだ回数だよ。

221:デフォルトの名無しさん
16/06/15 17:57:12.29 rzJhZO2i.net
URLリンク(ideone.com)
もう少しユーザーフレンドリーな感じにしてみたよ。これで最後だよ。
Windows ではこういう情報を得る方法は無いの?
非同期書き込みが無いのなら彼らの言うことも間違いではないんだけど。

222:デフォルトの名無しさん
16/06/18 11:42:41.43 zTifxauk.net
$ perl -p -e 〜
となっているのですが、-p と -e の意味を教えてください。

223:218
16/06/18 13:00:49.64 zTifxauk.net
一行構文のOPだとわかりました。
しかし、
C:\perl\bin\perl -e 'for $i (@ARGV) { print $i ,"\n";}' args1 args2 args3
をWindows環境で実行すると
Can't find string terminator "'" anywhere before EOF at -e line 1
と出てしまいます。
解決方法を教えほしいです。

224:デフォルトの名無しさん
16/06/18 13:07:12.42 FKPQs3z7.net
'print "\n"'ではなく"print qq(\n)"のように

225:デフォルトの名無しさん
16/06/18 14:22:55.12 zTifxauk.net
C:\perl\bin\perl -e 'for $i (@ARGV) { "print $i ,qq(\n)";}' args1 args2 args3
で試したがダメでした…

226:デフォルトの名無しさん
16/06/18 14:58:07.42 h9LNivvl.net
>>222


227: 俺は昨日から始めたんで確かなことは言えないけど、 DOSプロンプトだと、''で括ってもダメだったよ (何か設定があるんだけど昨日からなんで...) 例えば、 perl -e 'print "hello"' は perl -e "print \"Hello World\n\"" ってしないと動かなかった



228:デフォルトの名無しさん
16/06/18 15:22:54.54 h9LNivvl.net
よくよく考えたら、コマンドプロンプトで''はいけるはず無いよね
だって、まずコマンドプロンプトで命令が解釈されるわけだから
'a b'だと、連続した文字列とはならずに
'aとb'の2つの引数が指定されたと受け取られちゃうわけだしね

229:デフォルトの名無しさん
16/06/18 15:30:14.88 xZeqh3Cr.net
Perl の文法上
"\n"
の代わりに
qq(\n)
と書けますよ……という話じゃないのかなあ。
とりあえず、ググって見つけたページ
URLリンク(thinca.hatenablog.com)
URLリンク(up-cat.net)
相変わらずカオスなんですね。それがいやで Linux に乗り換えたのは前世紀のことなのに……

230:デフォルトの名無しさん
16/06/18 17:13:02.52 Q2VQ6qXf.net
DOS/Windowsコマンドプロンプトのクォートは "
UNIXのシェルのクォートは '
ただそれだけ
コマンドプロンプトのクォートとして "" を使っているから、Perl部分は
qq() を使ってる

231:デフォルトの名無しさん
16/06/18 17:51:48.00 5RdW1n8d.net
すごいにゃー。ワシは動けばいいやなんで。

232:デフォルトの名無しさん
16/06/18 17:53:59.52 qpxG5nAO.net
動かないんだろ?

233:デフォルトの名無しさん
16/06/18 20:50:09.79 QKdVDmdU.net
PowerShell_ISE では、どうなる?

234:デフォルトの名無しさん
16/06/19 20:43:06.86 p98kttl2.net
ファイルの中身じゃなくて、ファイル名をバイナリかなんかで扱いたいときはどうすれば良いでしょうか
どっかの国のどっか語でファイル名書いてあって、ファイル一覧を入手したら全部文字化けみたいな感じになってて困った

235:デフォルトの名無しさん
16/06/19 22:30:28.43 /GELYJ8A.net
まず、そのファイルが壊れてないかどうかエンコーディングが判らないことには確認しようがありません。
そして、そこに書かれているファイル名が正しいとしても、問題はそのファイル名で何をするかです。
ファイルを作成するとしたら少々困難を伴うと思いますが、何をしますか?
もう少し説明が欲しいです。

236:デフォルトの名無しさん
16/06/19 23:56:05.73 p98kttl2.net
1: ファイルは壊れてないです。あとファイルの中身はどうでも良くて困ってるのはファイルですね。
2: こちら側からバイナリを含めて希望してるのでそもそも文字コードは問わないです。
なおwindowsですので強制的な解釈としてはcp932でしょうか。文字かどうかは不明ですか。
3: 書いてある通り、ファイル一覧を入手したいです。(と言うよりすでにしました)。その時点での文字化けについてです。

237:デフォルトの名無しさん
16/06/20 01:41:13.70 Nxz2d29B.net
文字化けは君の環境のフォントの問題では…

238:デフォルトの名無しさん
16/06/20 01:52:28.59 3dbzY2ue.net
>>225
単にprintのあと改行したいだけなら、面倒なエスケープを避けてsayを使うのが楽だと思う。
perl -E ‘say “hoge”;’

239:デフォルトの名無しさん
16/06/20 01:55:16.19 3dbzY2ue.net
>>232
CPANにあるWin32::Unicodeを使ってみてはどうだろう。

240:デフォルトの名無しさん
16/06/20 02:14:22.79 JJJI2UNm.net
ちゃんと話を追ってればシングルクォートではコマンド文字列をperlに渡せないってことを理解できるのに
だから>>221では全体をダブルクォートで括ってるわけ

241:230
16/06/20 13:40:47.81 cF0IFcLP.net
>>232
「そのファイルが壊れてないか」と書いたのはファイル一覧のことだったんですが……
まあ、それは置いといて。
困っていると言われても、何をお望みなのかよく分かりません。
マルチバイト文字を作成者が意図した通りの文字として読みたいということなら、
やはりエンコーディングを知る必要があります。
そして、そのエンコーディングを扱うことが出来るソフトウェアと、もちろんフォントも必要です。
どんな環境で、どこからどのような手段で入手して、何をして文字化けだと思ったのか、
それがどうなるのが望みなのかを書いていただけないと、お役に立てそうもありません。

242:デフォルトの名無しさん
16/06/20 14:10:59.68 ppvG3ddJ.net
ファイル名はテキストだろ。
バイナリのファイル名など、聞いたことがない
フォントが無いだけで、たぶん正常だろ。
それか、ファイル一覧を表示している、端末の文字コードが違うだけ
そのファイル名をエディタにコピーして、色々な文字コードに変えて、試してみる

243:デフォルトの名無しさん
16/06/20 14:43:14.96 og12Zqf+.net
先日も申しましたが、ファイル名はOSの仕様によってcp932扱いで表示されたバイナリです。
windowsにおけるバイナリとテキストの違いは、改行など一部の文字の解釈です
すなわち、ファイル名を入手した時点で破損しています

244:デフォルトの名無しさん
16/06/20 15:21:44.17 7O0ObdXP.net
うーん・・・
関係ないけど
ハートマークのファイル名作ったけど、
ちゃんと表示できたよ

245:デフォルトの名無しさん
16/06/20 15:27:52.95 JJJI2UNm.net
>>239
「ファイルはテキストだが何のコードでエンコードされたものかわからん」をcp932で開いた
ではなくて
「cp932でエンコードしてしまって、もう元のファイルの情報は欠けてしまった文字化けファイル」を開いた
ってことか?

246:デフォルトの名無しさん
16/06/20 16:05:49.21 S2CnEqh7.net
>>239
破損とは何か。期待値と実際値を言わないとわからん

247:デフォルトの名無しさん
16/06/20 16:53:54.14 cF0IFcLP.net
もう一度聞くけど、どこからどのような手段で入手して、どうやって見てるの?
どうなってほしいの? 使ったソフトウェアの仕様はちゃんと理解できてるの?

248:デフォルトの名無しさん
16/06/20 23:26:05.47 og12Zqf+.net
Aディレクトリの中のファイル名をopendirでとってくる。
この時のファイル名ってどう言う扱い?バイナリ?テキスト?コードは?フラグは?
とってきたらそれがすでに破損してて開くこともできない。

249:デフォルトの名無しさん
16/06/20 23:27:22.44 og12Zqf+.net
もちろん cp932で定義されてる範囲のバイト列ではバグらないよ

250:デフォルトの名無しさん
16/06/21 00:30:40.48 zxMwhnoQ.net
そうですか。
で?

251:デフォルトの名無しさん
16/06/21 12:21:49.21 yHwsrvxs.net
-------------------------------------------------------
Perl に関係ない話題は、以上で終了。

252:デフォルトの名無しさん
16/06/22 02:03:09.88 pkNIGL7K.net
>>ファイルの中身じゃなくて、ファイル名をバイナリかなんかで扱いたいときはどうすれば良いでしょうか
特別なことをしなければバイナリで扱うことになる。むしろファイル名は文字列では扱(え|わ)ない。

253:デフォルトの名無しさん
16/06/22 06:43:08.46 dLzJGxXLx
PerlはA系を使うクソ仕様だから、直接win32叩いてU系でディレクトリを読みだすか、
>>235の言うように、Win32::Unicodeでも使う。

254:デフォルトの名無しさん
16/06/22 17:07:36.10 NJ9t5GVO.net
Perlを使って下記のように2文字半角スペースを入れたいのです。
0015000008006a3376 -> 00 15 00 00 08 00 6a 33 76
下記を教えて貰いましたが旨く出来ません・・・アドバイス願います。
$ perl -p -e 's/(..)/$1 /g;'
001500 -> 00 15 00

255:デフォルトの名無しさん
16/06/22 17:34:24.64 MK9gPhs4.net
いや、ちゃんとその通りになったけど……どううまくいかなかったの?
末尾にスペースが入っちゃいかんとかなら、方法はあるけど。

256:デフォルトの名無しさん
16/06/22 17:34:34.20 zY+0G6HH.net
それでできたけど。

257:デフォルトの名無しさん
16/06/22 17:44:10.61 NJ9t5GVO.net
試したのは下記ですが、進まないと言うか終らないんです。
連続数字は変えますが・・・123456に変更
perl -p -e 's/ 123456/$1 /g;'
perl -p -e 's/(123456)/$1 /g;'
perl -p -e 's/( 123456)/$1 /g;'
perl -p -e 's/\(123456\)/$1 /g;'

258:デフォルトの名無しさん
16/06/22 18:37:34.12 ZXocXNxo.net
>>253
いや、そのドットが重要なのでは…?

259:デフォルトの名無しさん
16/06/22 19:34:58.14 NJ9t5GVO.net
>>254
色々と試行錯誤した中で試してみましたが、ドットを入れるならスペース入れても
同じような・・・
perl -p -e 's/(12.34.56)/$1 /g;'

260:デフォルトの名無しさん
16/06/22 19:45:27.49 9eEpB7QB.net
もう連続した数値を2桁ずつ区切るとは話が違ってきてるぞ
まあ色々試しているんだろうが、まず正規表現をちゃんと勉強した方が結局は早道だよ

261:デフォルトの名無しさん
16/06/22 20:13:59.90 SZhXzwW9.net
>>255
正規表現を使っているという事は理解してる?
ドット一つは「任意の一文字」を意味しているのだけれども…

262:デフォルトの名無しさん
16/06/22 20:14:45.08 GjDXavCQ.net
$string = '012345';
$string =~ s/(..)/$1 /g;

263:デフォルトの名無しさん
16/06/22 20:36:25.70 jdKVcriH.net
s/(..)/$1 /g
( ) で囲むと、キャプチャーできて、$1〜9 で後方参照できる。
. は、任意の1文字だから、.. で2文字
その2文字を、$1で参照して、その後ろに、半角空白を付けている。
$1の後ろに、半角空白があるだろ
g(global)フラグは、すべて置換する
だから、ab なら、ab半角空白 となる。
正規表現の説明を参照

264:デフォルトの名無しさん
16/06/22 20:38:53.55 q7cmPaAS.net
質問者は本当にやりたいことを隠して質問してるからもうどおでもいいけど
なぜ  perl -p -e 's/(..)/$1 /g;' でうまくいっちゃうんだろうね。
ぱっと見だと
001500 -> 00 01 15 50 00
になってもおかしくないのになと思った。

265:デフォルトの名無しさん
16/06/22 21:11:10.25 NJ9t5GVO.net
>>251->>260 皆さまスレ汚してすみませんでした。
Perlは使うばかりで、プログラミングはど素人です。
(..)は顔文字だと思っていました・・・お恥ずかしい
○○○@H170M-PLUS ~
$ perl -p -e 's/(..)/$1 /g;'
123456
12 34 56
あ〜スッキリした。
有難うございました。

266:デフォルトの名無しさん
16/06/22 22:35:11.08 jdKVcriH.net
>>260
1234なら、12 23 34 にはならない
.. は2文字に一致するから、12に一致する。
すると次は、3からスタートするから、34に一致する
つまり、一致した次の文字から、スタートする

267:デフォルトの名無しさん
16/06/22 23:26:29.09 q7cmPaAS.net
なるほろー。
最初はこんな感じが頭にうかんだけど冗長だね。ワンライナー3級ですな。
perl -ne 'for( $i = 0; $i < length() ; $i += 2 ){ print substr($_,$i,2)" " }'

268:デフォルトの名無しさん
16/06/23 09:02:33.36 9bmKWFfz.net
もう顔文字にしか見えない(..)どうしてくれる

269:259
16/06/23 10:28:45.02 mgh0+o+/.net
>>264 _(_^_)_ m(_ _)m

270:デフォルトの名無しさん
16/06/23 14:28:28.61 Fa0lhzij.net
>>244
もう見てないと思うけど、一応書いとくよ。君はまず、
Perl readdir Windows
でググってみるべきだった。

271:デフォルトの名無しさん
16/06/28 23:22:27.94 sQcX3Fgh.net
複数の文字列フィルタ (grep や s) を連続で通す書き方って、どうだったっけ?
ある文字列を
 ・grep でフィルタ → grep で再度フィルタ → s で置換 → split で分割 → 先頭要素だけスカラー変数に格納
これをスマートに(可能ならば1行で)やりたい。

272:デフォルトの名無しさん
16/06/28 23:31:42.78 IoEHfO5D.net
@result = map {(split //)[0]} map {s//;$_} grep {} grep {} @strings;
こんな雰囲気でええんでないかい?

273:デフォルトの名無しさん
16/06/29 01:53:58.12 edw32cCt.net
mapやgrepを一行で複数書くのはアホの代表だと思いまーす

274:デフォルトの名無しさん
16/07/02 14:22:47.36 UtcihNE2.net
基本的に日本語で書いたときの逆順に記述するだけなんだけどね
マニュアル読んで分からなければたぶん無理だろう

275:デフォルトの名無しさん
16/07/02 15:01:42.19 9DiVepfM.net
批判するならコードかけや

276:デフォルトの名無しさん
16/07/04 00:55:08.84 xC//1vCA.net
id="011"<width>1</width>
この文字列から011だけ正規表現で抜き出す方法教えてください
idの数値だけを抜き出したい

277:デフォルトの名無しさん
16/07/04 00:57:21.80 eDhj/6QR.net
>>272
これで文字列全体?
その前後にいろんなタグがありそうないやな予感がするんだが?

278:デフォルトの名無しさん
16/07/04 01:08:21.29 xC//1vCA.net
>>273
ありますが、かなり長いxmlなので必要だと思った部分だけ抜き出しました
もう少し抜き出してみるとこんな感じです
source="URLリンク(hogehoge.xml") />
<name="foo" id="0110"
このような文字列が大量にあってそのなかからidの数値だけが欲しいです

279:デフォルトの名無しさん
16/07/04 01:29:50.90 xC//1vCA.net
>>272
/id="([0-9]*)/g
これでできたような気がします

280:デフォルトの名無しさん
16/07/04 22:53:37.85 0oVcG5wM.net
HTMLパーサーを使うのが一番簡単で正確
コメントの中にHTMLがあったらどうするんだ?
つーか正規表現を乱用するな。

281:デフォルトの名無しさん
16/07/04 22:54:10.05 0oVcG5wM.net
XMLパーサーか

282:デフォルトの名無しさん
16/07/05 17:36:47.05 QGn+r4HY.net
>>272 だとタグの外にあるように見えるのに >>274 ではタグの中になってる。
だから静観してたけど、結局どっちなの?

283:デフォルトの名無しさん
16/07/05 17:48:38.40 gL12vNid.net
なんか最初のだと後に<width>のある特定のidの値が欲しいのかな?って思ってたけど
そうでもなくて全部のidの値でいいんだってのが>>275でわかったんで拍子抜けしたところ

284:デフォルトの名無しさん
16/07/08 23:33:47.61 l/0Eyz2z.net
うん、自称ベテランにありがち。

285:初心者です
16/07/09 07:48:40.33 g+Tip2fR.net
宜しくお願いします。
$ua->cookie_jar(HTTP::Cookies->new(file => "cookie.txt",autosave => 1));
でcookie.txtにクッキーを取得できるのは分かりますが
削除したい場合にはどのようなコードを書くんでしょうか?

286:デフォルトの名無しさん
16/07/09 16:55:14.14 ce8+Vk05.net
そういえばいつもお世話になってるのに知らないな……と思ってマニュアルを読んでみた。
どうやら clear を使うらしいな。まずは scan で中身を見てみるのが良さそうだ。
これ以上は説明のしようがない。自分で頑張ってほしい。

287:デフォルトの名無しさん
16/07/09 21:07:47.73 g+Tip2fR.net
ウィッス

288:デフォルトの名無しさん
16/07/11 17:00:44.97 ELH2iWp3.net
マルチプロセス処理の Parallel::Prefork は、
Windows の StrawberryPerl か ActivePerl に、インストール可能ですか?
URLリンク(pass.cpantesters.org)
Strawberry、Active、旧バージョン、32bit、64bitなど色々試したけど、
>Can't locate Parallel/Prefork.pm in @INC (you may need to install the Parallel::
>Prefork module) (@INC contains: C:/...

289:デフォルトの名無しさん
16/07/12 01:04:59.55 BoIJCZeB.net
cpanmやらppmでやってみたら

290:デフォルトの名無しさん
16/07/14 20:00:42.23 GgJblQeZ.net
突然文字が正しく表示できなくなるゴミPerl
人をイラつかせるために作られた言語だなこれ
存在価値がないどころか存在事態が害悪
早く消滅すればいいのに

291:デフォルトの名無しさん
16/07/14 20:06:36.90 GgJblQeZ.net
マジで使い物にならない
「ゴミPerlで文字がいきなり変になる対処」
「産廃Perlの文字取り扱いがおかしいのをなんとかする方法」
「糞Perlが文字をまともに扱えないことへの特効薬」
もう数時間検索してるが解決案が出てこない
こんなに酷い言語はPerlくらい

292:デフォルトの名無しさん
16/07/14 20:15:06.51 GgJblQeZ.net
Perlは本物のゴミ
文字すらまともに表示できないとか利用価値なし

293:デフォルトの名無しさん
16/07/14 20:25:10.95 GgJblQeZ.net
Perlのゴミなところ
文字「あ」すら表示すらできないためとてつもなくイライラする

294:デフォルトの名無しさん
16/07/14 20:28:38.21 GgJblQeZ.net
明日納品なのに解決する兆しなし
こういうときは一から書き直すことも多いが何千行もあるシステムを明日までに書き上げられるわけもない
本当にPerlはゴミすぎる

295:デフォルトの名無しさん
16/07/14 23:24:13.01 RqQ+21r9.net
だからバイナリで扱えと口が酸っぱくなるほど言ってきたわけで聞き入れないお前が悪い。

296:デフォルトの名無しさん
16/07/15 08:14:17.03 rP1+mz2q.net
文字コードを理解してないだけでは・・・?

297:デフォルトの名無しさん
16/07/15 08:34:29.93 XWIPLqFW.net
テンプレの>>5 を誰かが勝手に変えたからだ。
元々はこうなっていた。
スレリンク(tech板:4番)
------------------------------------------------------------
# [Perl 日本語処理の基礎の基礎]
# このレスは、Windows の ActivePerl で日本語処理を行う場合のテンプレートです。
# このレスの内容をそのまま、UTF8 形式のソースファイルに保存して下さい。
# 入出力ともシフト JIS 形式のファイルまたは DOS 窓を想定しています。
# まず、以下の行を先頭に入れて下さい。
use utf8;
use open IO =>

298:デフォルトの名無しさん
16/07/15 08:36:25.21 XWIPLqFW.net
ありゃ?途中で切れちゃった。>>293のリンク先見てね。

299:デフォルトの名無しさん
16/07/15 09:08:17.43 ATzxunsm.net
とりあえず Data::Dumper と PerlIO::get_layers を使えば助けを求めるのに役立つと思うが
責任転嫁しかできないゴミに言ってもなぁ……

300:デフォルトの名無しさん
16/07/15 12:22:26.70 XWIPLqFW.net
>>287 それからな、
> ゴミPerl
> 産廃Perl
> 糞Perl
どれも、なかなかいいところを突いているが、ちょっと外れているな。
正解は「ガラクタ」だ。
Perl とは「pathologically eclectic rubbish lister」
(病的折衷主義のガラクタ出力装置)の 略なのだ。

301:デフォルトの名無しさん
16/07/16 12:58:34.75 STpjI2h3.net
インコード
使ったソースは
ウンコード

302:デフォルトの名無しさん
16/07/17 01:45:28.71 T2eP0LKz.net
内部エンコードはperl独特だよね。
扱えれば入力と出力がどんなエンコードだろうが無双出来るけど

303:デフォルトの名無しさん
16/07/17 09:40:41.84 kAN9hSRv.net
>>296
「Perl を愛する人にとっては」と前置きするのを忘れてるぞ。

304:デフォルトの名無しさん
16/07/17 13:59:57.99 D/SlpqZf.net
まぁperlなんて使い物にならないでしょ
use utf8;付けたらそれまで文字化けしなかったUTF8の文字列が文字化けしたし

305:デフォルトの名無しさん
16/07/17 14:42:10.28 F+fhoGjl.net
なにその理論(笑)
まぁ使いにくいのは異論ないが

306:デフォルトの名無しさん
16/07/17 16:24:12.49 Cv1W2kE4.net
ではperlじゃないならなにがいいのかな。python?
rubyはパイプ記号が変なところで出てくるからちょっと違和感有り。

307:デフォルトの名無しさん
16/07/17 17:57:00.54 PyzTEoPA.net
= パイプ記号

308:デフォルトの名無しさん
16/07/17 17:57:53.58 F+fhoGjl.net
賭けてもいいが、文字コードが分からないのをPerlのせいにしてるやつが、
自分で1からプログラミングしたら壊滅的な状況になると思う。

309:デフォルトの名無しさん
16/07/18 02:39:59.89 e41bhxXR.net
でも、かつて壊滅的な状況じゃなかったよね?

310:デフォルトの名無しさん
16/07/18 03:14:08.10 GZVIgCur.net
>賭けてもいいが、文字コードが分からないのをPerlのせいにしてるやつが、
>自分で1からプログラミングしたら壊滅的な状況になると思う。
意味不明な言動をする気違い。
「賭けてもいいが、腹が痛くなるのを残飯のせいにしてるやつが、
自分で1から料理したら壊滅的な状況になると思う。」
と言ってるのと同等で意味不明。
気違い。

311:デフォルトの名無しさん
16/07/18 07:46:08.11 C0GpTohk.net
自分で料理出来るのであれば、残飯なんて最初から食べないよ…
残飯を食べるという事は、食べざろうえない理由があっての事だろうに…

312:デフォルトの名無しさん
16/07/18 08:14:55.04 dOZOPpl8.net
すくなくとも腹痛を人のせいにしなくてすむんじゃね?

313:デフォルトの名無しさん
16/07/18 14:09:08.76 UhcVRSnP.net
高級料理も残せば残飯になるのさ。
最後の姿を見ただけで、本来の姿を判断するのは
無能というもの。

314:デフォルトの名無しさん
16/07/19 09:36:50.47 BbD/ZGSl.net
文字コードが分からないのをPerlのせいにしてるのは馬鹿の上限を突破してるが、
腹痛を残飯のせいにするのは間違ってないだろう。食ったと言う意味では馬鹿だが

315:デフォルトの名無しさん
16/07/19 14:33:33.84 kU2ISgr0.net
どんなに文字コードを理解している人間でも文字をまともに扱えないピログラム言語の前では無力
その程度のことも分からないのかはたまたPerlがまともな言語だと錯覚しているのか
もし錯覚しているならば自分の使っている言語についてほとんど何も知らないということになる
まずはその自覚をすべきである

316:デフォルトの名無しさん
16/07/19 15:10:05.04 QuuYpuW+.net
参考までに聞くけど、文字をまともに扱える言語って何?

317:デフォルトの名無しさん
16/07/19 15:23:05.53 BbD/ZGSl.net
全行つっこみどころ満載なやつにかまってはいかん

318:デフォルトの名無しさん
16/07/20 17:32:04.55 gGnx4FL9.net
んで俺も文字をまともに扱える言語がなにか気になるわけだが
310とは別人

319:デフォルトの名無しさん
16/07/20 19:56:54.60 lrew/2ZZ.net
文字は知らんけど、
Perlってあらゆる面でPHPより劣ってるよな。

320:デフォルトの名無しさん
16/07/20 20:04:27.70 y5BMpkOv.net
PHPってHTML言語じゃないの?比較の対象にもならないと思うんだが。
rubyに負けてるというならまだわかるけど。

321:デフォルトの名無しさん
16/07/20 21:52:53.39 gGnx4FL9.net
PHPてあんた

322:デフォルトの名無しさん
16/07/20 23:37:17.38 E+SEwayU.net
>>316
HTML言語ってなんやw
HTMLに埋め込めるってだけでごく普通の
プログラム言語だぞ。
どれくらい普通かというと以下の機能が搭載されてる
・クラス
・インターフェース
・トレイト
・ラムダ
・クロージャー
・名前空間
・例外
・ジェネレーター
・ガベージコレクション
あと言語機能じゃないが、CLIプログラムの作成や
ウェブフレームワークなどもある。

323:デフォルトの名無しさん
16/07/20 23:43:45.09 lrew/2ZZ.net
>PHPってHTML言語
Perl厨は他の言語をロクに知りもしないで
敬遠してるんだろうな。
だからPerl厨はいつまで経っても
エンジニアとして半人前なのだろう。

324:デフォルトの名無しさん
16/07/20 23:47:10.52 E5afqhTD.net
309ではないがC言語。もちろんPerlもだ。
ついでなんで
s/ピログラム言語/プログラム言語/;

325:デフォルトの名無しさん
16/07/20 23:55:15.99 gGnx4FL9.net
Cって純粋なC?
ご冗談を。
あれは何も文字を扱ってないよ。
自分で作って下さい、ってね。

326:デフォルトの名無しさん
16/07/20 23:58:27.03 gGnx4FL9.net
>>318
だからなに?
その機能'(笑)はわざわざ書かなくてはならないことなの?
だから文字の扱いに対してもおかしな考えを持つんだね。
文字を扱うのは言語の機能(笑)が大事なんだってね。
基本プログラムが出来ない人はスクリプトが持つ機能とやらに注目したがる。
自分でプログラミングできないからね。

327:デフォルトの名無しさん
16/07/21 00:13:43.65 qEfVH42B.net
普通のunix処理系にperlは入ってるけどPHPは入ってないでしょ。
Webプログラミングなんてどうでもいい。システムプログラミングとか
テキストマイニングしたいんだって動機から入るとぱっと見PHPは目に入らないよ。
紹介がWeb用ですなんだし。
幼児的に誹謗中傷しないで諭すコミュ力をつけたほうが。。

328:デフォルトの名無しさん
16/07/21 01:02:15.71 eeWcI0WT.net
PerlとPHPを比較するって事自体、CGIの定番としてPerlが使われはじめた15〜20年ぐらい前の話だから

329:デフォルトの名無しさん
16/07/21 02:09:41.10 vaQfL518.net
>>322
> その機能'(笑)はわざわざ書かなくてはならないことなの?
わざわざ書かないとわからないでしょ?w
これ以外に何が必要なんだい?
言ってみ。

330:デフォルトの名無しさん
16/07/21 02:18:26.64 QEbE4SDT.net
>>321
お前のいう文字は文字列のことか?

331:デフォルトの名無しさん
16/07/21 09:47:01.78 oSsee0hG.net
質問者が言う文字だ
質問じゃなくて子供の八つ当たりに見えたが

332:デフォルトの名無しさん
16/07/21 10:12:11.24 wN4yZ2B5.net
普通のunix処理系wwww
普通てwwwwwwwwwww
こんな曖昧でいい加減な単語を使って反論になると思ってんのかwww
こんな客観的数値も示せない思い込みが根拠になるなら
普通の人間はPerlなんざ使わねーよwwwwwwwww
普通の人間はなwwwwwwwwwwwwwwwwwwwwwww

333:デフォルトの名無しさん
16/07/21 14:22:48.08 +jQ9eKqj.net
perl-5.24.0.tar.gz 開いて見てみたけど
ソースはC言語で書かれているんだよね
作った人は「自分で作って下さい」を実行したんだろうね

334:デフォルトの名無しさん
16/07/22 00:54:29.43 ak+a/2Hs.net
文字を扱うのは人間。Perlが扱っているのは文字コードな。

335:デフォルトの名無しさん
16/07/22 02:53:58.61 jSbimIDf.net
>>318
post/getがよしなにスーパーグローバル変数(笑)に入ったり
何もしなくてもエラーがブラウザで見られたり(言語がhttpプロトコルを理解できてる?)
iniファイルで挙動が変わったり
ごく普通のプログラム言語からはかけ離れてるだろ
Javascriptの方がよっぽど普通なんだけどなぁ

336:デフォルトの名無しさん
16/07/22 03:14:36.53 7iYsigKa.net
> post/getがよしなにスーパーグローバル変数(笑)に入ったり
それは10年以上前の話だよw
知識止まってんなぁ。

337:デフォルトの名無しさん
16/07/22 03:31:19.54 jSbimIDf.net
>>332
お前の使ってるナウ(笑)なPHPはquerystringに値いれてもvar_dump($_GET)するとnullなの?
言語って10年経とうが根本的な部分はそうそう変わんないだぜ

338:デフォルトの名無しさん
16/07/22 04:41:07.53 7iYsigKa.net
>>333
Perlでは グローバル変数$ENVの$ENV{'QUERY_STRING'} に
querystringが入るけど、それと何が違うん?

339:デフォルトの名無しさん
16/07/22 09:01:23.54 jSbimIDf.net
>>334
それはCGIとかがquerystringを環境変数へセットしてるだけであって(postは標準入力)
環境変数や標準入力、argsを読む機構はperlに限らずどの言語で備えてるでしょ。
デリミタも指定せずname[]のようなオレオレ仕様で勝手に解釈して予め変数に入れるのを
言語のレイヤーで行うのはphpぐらいしか思いつかない。

340:デフォルトの名無しさん
16/07/22 09:13:02.54 7iYsigKa.net
>>335
え?「思いつかない」ってだけ?w

341:デフォルトの名無しさん
16/07/22 09:14:42.73 DCfhc9fh.net
PHPの話してる時点でズレてるとは思わんのかね

342:デフォルトの名無しさん
16/07/22 13:21:21.28 9lWfzFCE.net
いきなりなんの前触れもなかったし、何言ってんだ?と思ったら、PHPのdisりかよ。
知らんがな…

343:デフォルトの名無しさん
16/07/22 14:07:48.50 jisYPSD0.net
>セットしてるだけ
だけw

344:デフォルトの名無しさん
16/07/22 14:50:50.79 jisYPSD0.net
言い訳が苦しくなってくると、最後に「だけ」を付加するPerl厨
窃盗犯が「ちょっと借りただけだろ」と言い訳するのと同じ
犯罪者と同じ思考パターンを有するPerl厨
ちなみに犯罪者と同じ思考パターンを持つヴァカがPerlを選ぶのか
Perlを使ってるうちに犯罪者と同じ思考パターンを持つようになるのかは不明
どちらにせよPerl厨はヴァカで犯罪者予備軍ということに変わりはない
まともな人間はPHPを選ぶ

345:デフォルトの名無しさん
16/07/22 19:55:10.85 d984b3j7j
Perlと同程度に時代遅れなPHPを出してくる辺りが面白い。
2chという時代遅れな掲示板に、これからも、ずっと変わらずに居て、PHPを推し続けるのだろうな。

346:デフォルトの名無しさん
16/07/22 22:02:06.14 ZdAo90QB.net
今時仕事にも趣味にも役に立たないPHP選ぶバカはいないだろ

347:デフォルトの名無しさん
16/07/22 23:10:31.36 jSbimIDf.net
>>336
php以外の該当する言語を一つあげるだけで完全に論破できるチャンスだよ!

348:デフォルトの名無しさん
16/07/22 23:38:00.41 SRU6z2ZT.net
はいはい。犯罪者予備軍ね。NGにしときますわ。
やりたいことやりたい人は処理系にこだわりはないのにアホか。
コード書けない中学生がVBよりVCと言ってるのと変わらんわ。

349:デフォルトの名無しさん
16/07/23 01:01:50.42 tWjtYIW6.net
>>343
逆だろ?
PHPが他の言語と一緒だということを証明するために
他の言語でもあるような機能を言う。
PHPは他の言語と同じであることを示すことが、正しい論破の仕方だ。
PHPは「他の言語+αの機能」であるという事実に対して
それと同じものを出すことで、何を論破することになるのか?

350:デフォルトの名無しさん
16/07/23 02:01:49.49 bOUqJlZz.net
そろそろ邪魔くさくなったから消えてほしい
劣等感のかたまりは迷惑関係なく必死で長所をアピールしはじめるってね
適切なスレでやってくれんかね

351:デフォルトの名無しさん
16/07/23 02:30:45.09 Z+5onCph.net
嫌なら見なければいいのに
他人にあっちいけとか指示する池沼っているよな。
自己中心的な池沼のお手本。

352:デフォルトの名無しさん
16/07/23 08:35:47.91 rC+TU0A1.net
他プロセスでファイルをopenしているときにそのファイルをrenameしようとすると
renameできないみたいだけどうまくrenameする方法は?

353:デフォルトの名無しさん
16/07/23 10:06:58.15 I+uJVTmO.net
close

354:デフォルトの名無しさん
16/07/23 11:14:44.62 rC+TU0A1.net
>>349
それだとopenとcloseする間にrenameが割り込むとだめ
そこで自分で方法を考えました
まずディレクトリにaccess_kinshi.datというファイルを作ります
このファイルが存在している間は他プロ


355:Zスでこのディレクトリにあるファイルは全てアクセスできないものとする そしてディレクトリ内にあるファイルを全てrenameする そのあとaccess_kinshi.datファイルを削除すればいいということです



356:デフォルトの名無しさん
16/07/23 11:20:06.22 I+uJVTmO.net
前提条件が変わってますけど

357:デフォルトの名無しさん
16/07/23 15:21:23.54 bOUqJlZz.net
他のプロセスってなに?
どっちもPerlで自分の作った物なら、ファイルロックでも使うと良い。
自動待機してくれる

358:デフォルトの名無しさん
16/07/23 19:27:38.24 IQFGkMCr.net
後方参照で教えていただきたいことがあります。
A 80 90
(空白の部分はタブかスペース)
と書いてあるファイルの80とか90の部分を書き換えたいのです。
perl -pe 's/^([A-Z])(\s+)([0-9]{2})(\s+)([0-9]{2})/$1$2$3$4$5/' file で
マッチした部分を参照できるのはわかっているのですが、この場合$3の「80」を「1」にするには
どのような方法をとればよいでしょうか?
perl -pe 's/^([A-Z])(\s+)([0-9]{2})(\s+)([0-9]{2})/$1$21$4$5/' file とすると
$21と解釈されるようで結果がA 90となってしまいます。

359:デフォルトの名無しさん
16/07/23 19:32:51.24 sc8oJJPG.net
シェルスクリプトと同じで、{} で変数名を明治する。
/${1}${2}1${4}${5}/

360:デフォルトの名無しさん
16/07/23 19:41:00.25 IQFGkMCr.net
>>354
出来ました!!
{}で囲むのは思いつかなかったです。

361:デフォルトの名無しさん
16/07/23 20:22:22.12 rC+TU0A1.net
>>352
他プロセスとは同じプログラムを複数で同時実行したやつです
それとファイルロックだとディレクトリにあるファイル1つ1つにロックしなきゃならないので
ディレクトリにあるファイル全てにアクセス禁止するために
アクセス禁止用ファイルを作りました

362:デフォルトの名無しさん
16/07/23 20:22:25.35 erGYoQ8z.net
スクリプトを動かすときは、「動きますように」と昭和する。

363:デフォルトの名無しさん
16/07/23 20:41:29.11 KzTkH9Ph.net
自分で考えているというのは大変良いことだと思うけど、聞きたいことがあるなら
環境くらいは書いてくれないと……
それに、使用中のファイルを rename することの何が問題なのかさっぱり解らない。
まず、何をするプログラムなのかを書いた方がいいと思うよ。

364:デフォルトの名無しさん
16/07/23 22:25:30.57 rC+TU0A1.net
a

365:デフォルトの名無しさん
16/07/23 22:36:22.09 rC+TU0A1.net
なんか書き込こもうとするとエラーが出て書き込めないわ

366:デフォルトの名無しさん
16/07/23 22:48:53.55 rC+TU0A1.net
ようするに
てすと1シージーアイ
OPEN(IN、”あああ.DAT”);
すりーぷ(5);
cLOSE(IN);

てすと2シージーアイ
リネーム(”あああ.DAT”、”AAA。DAT”);
これを同時実行してもリネームはできなかったってこと

367:デフォルトの名無しさん
16/07/23 22:51:17.71 rC+TU0A1.net
同時実行って言ったけど先にてすと1の方を起動して5秒以内にてすと2を起動です

368:デフォルトの名無しさん
16/07/23 23:18:44.54 eYAwBGPh.net
他のプロセスが開いているファイルを、更新できるわけないだろ
2つのプロセスで、ファイル共有できるのは、read & read、の組み合わせだけ。
read & write, write & read, write & write は、共有できない

369:デフォルトの名無しさん
16/07/23 23:40:01.25 sc8oJJPG.net
>他のプロセスが開いているファイルを、更新できるわけないだろ
何を前提に話してんだ?
更新出来るから、ファイルロックなぞの方法が開発されたんじゃねーの?
$ for i in 1 2 3 4 5 ; do
> perl -le 'open my $f, q{>>}, q{foo.txt} ; print $f q{foo} ; sleep 2' &
> done
$ cat foo.txt
foo
foo
foo
foo
foo

370:デフォルトの名無しさん
16/07/23 23:51:16.68 tWjtYIW6.net
>>364
更新 ”できないようにする" から
ロックなんだよ。アホかw

371:デフォルトの名無しさん
16/07/23 23:55:37.22 sc8oJJPG.net
>>365
ん?
(デフォの状態では)更新出来るから、
(更新出来ないようにするための)ファイルロックなぞの方法が開発されたんじゃねーの?
ってレスだったんだが、、、

372:デフォルトの名無しさん
16/07/24 00:40:44.17 9mJaMPLw.net
更新できるのは、同一プロセス内のマルチスレッドだろ
だから、マルチスレッド・プログラミングは難しい

373:デフォルトの名無しさん
16/07/24 01:05:08.31 IyAH6Xir.net
ファイイルロックのモードは2より5のノンブロッキングの方が軽いですか?

374:デフォルトの名無しさん
16/07/24 01:16:29.25 p8SJSbCV.net
>>368
軽いかどうかで決めるんじゃない。
それが必要かどうかで考えろ。
ホント頭が悪いやつは、軽いかどうかの基準しか
持ち合わせてないんだよな。

375:デフォルトの名無しさん
16/07/24 02:10:22.95 8SIezcUV.net
上の2行は頭いいように見えたが
下の2行でホントに頭が悪い人だと思った。
誹謗癖はやめようね。嫌われるよ。というかすでに嫌われてると思うけど。

376:デフォルトの名無しさん
16/07/24 02:12:06.72 p8SJSbCV.net
>>370
正しいのか間違っているのかをいえよ。

377:デフォルトの名無しさん
16/07/24 03:52:51.83 9mJaMPLw.net
ノンブロッキングは、Node.js などが並行処理で、リクエストを受け付ける場合に使う。
こういうのは、プロ中のプロが使うもので、プログラムも順序通りには進まないから、
プログラミングが極めて難しい(イベントドリブン)
初心者は、ブロッキングを使え。
プログラムは一本道で、順序通りに進む

378:デフォルトの名無しさん
16/07/24 04:07:39.30 p8SJSbCV.net
※ただしマルチタスクOSじゃない場合に限る

379:355
16/07/24 10:28:35.84 K5Ja97DP.net
>>361
少なくとも Linux では問題なく rename できるよ。
rename できないというのはシステムコールのマニュアルに書いてあるの?
テストのやり方に問題は無かったの? こんなふうに同期させた方がいいと思うんだけど。
URLリンク(ideone.com)

380:デフォルトの名無しさん
16/07/24 22:44:38.60 IyAH6Xir.net
このようにflockをネストするのは問題ありますか?
open(IN, "< $datafile");
flock(IN, 1);
open(IN2, "< $datafile2");
flock(IN2, 1);
close(IN2);
close(IN);

381:デフォルトの名無しさん
16/07/25 18:20:04.46 tVy4ghQr.net
>>374
windows環境だけどopen中のファイルのrenameはできなかった
例えばtestディレクトリがあって、プロセスAでtestディレクトリにあるファイルのrenameやファイルの作成、
プロセスBでtestディレクトリを削除するとした場合
testディレクトリにファイルが残っているとrmdirが成功しないのでtestディレクトリを削除できない
unlinkでtestディレクトリのファイルを全て削除してからtestディレクトリを削除しようとしても
その間にプロセスAでファイルが作成された場合ディレクトリを削除できない
だからディレクトリそのものをロックしたいっていうこと

382:デフォルトの名無しさん
16/07/26 08:16:09.27 Yl3q3y9J.net
>>375
問題ない

383:デフォルトの名無しさん
16/07/26 13:18:10.17 0CGOQrnU.net
>>376
そういうことを先に書いてくれないと……
そうか、Windows ではできないのか……
プロセスAの処理が終わるまでプロセスBを待たせておきたいということなら
普通に mkdir でどうでしょう。可搬性も高い排他制御の定番です。

384:デフォルトの名無しさん
16/07/26 13:54:47.54 M5KaPrwS.net
>>376
File::Path -> remove_tree
URLリンク(search.cpan.org)

385:デフォルトの名無しさん
16/07/26 18:01:31.91 0CGOQrnU.net
何が目的でそのための何をしている状況なのかというのがいまだに理解できないんだけど、
そもそもそんな状況にしないやり方を考えた方がいいのかもしれない。
どうしても排他制御が必要なら例えばデータベースを使うというのは Windows でも出きると思う。
Windows のことは知らないからこれ以上はお役に立てそうに無い。


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

546日前に更新/269 KB
担当:undef