【Perl】初心者コーナー Part17
■ このスレッドは過去ログ倉庫に格納されています
1:自分はこう言う事がしたい。
2:それでこんな風にやってみたが・・・
3:それだとこんなエラーが出て上手く行かなかった。
1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。
CGIだけど、なんか質問ある? Part 8
http://pc.2ch.net/test/read.cgi/php/1032704121/
参考書籍の話題は【Perl,CGI】参考書籍 第三版
http://pc.2ch.net/test/read.cgi/php/1030209573/
その他の雑多な話題は、【CGIに依存しないPerlの話題一般/Part2】
http://pc.2ch.net/test/read.cgi/php/1030548610/
スクリプトの改造依頼は 【 スクリプト改造工房 PART 5 】
http://pc.2ch.net/test/read.cgi/php/1028193595/
過去ログ、その他の役立ち情報は>>2-10あたりを見よう。
0002nobodyさん
02/10/14 17:25ID:???Part1 http://tako.2ch.net/test/read.cgi?bbs=perl&key=957208980 参照不能
DAT: http://tako.2ch.net/perl/dat/957208980.dat
Part2 http://tako.2ch.net/test/read.cgi?bbs=perl&key=971817087 参照不能
DAT: http://tako.2ch.net/perl/dat/971817087.dat
Part3 http://tako.2ch.net/test/read.cgi?bbs=perl&key=979894521 参照不能
DAT: http://tako.2ch.net/perl/dat/979894521.dat
Part4 http://tako.2ch.net/test/read.cgi?bbs=perl&key=984430156 参照不能
DAT: http://tako.2ch.net/perl/dat/979894521.dat
Part5 http://pc.2ch.net/php/kako/988/988728069.html
Part6 http://pc.2ch.net/php/kako/996/996075607.html
Part7 http://pc.2ch.net/php/kako/1000/10002/1000267444.html
Part8 http://pc.2ch.net/php/kako/1003/10039/1003900311.html
Part9 http://pc.2ch.net/php/kako/1009/10095/1009549309.html
Part10 http://pc.2ch.net/php/kako/1014/10145/1014556702.html
Part11 http://pc.2ch.net/php/kako/1017/10172/1017201229.html
Part12 http://pc.2ch.net/php/kako/1019/10199/1019917048.html
Part13 http://pc.2ch.net/php/kako/1022/10227/1022731565.html
Part14 知らん
Part15 http://pc.2ch.net/test/read.cgi/php/1028816385/
Part16 http://pc.2ch.net/test/read.cgi/php/1032070299/
[ひまぢん氏のミラー]
Part1 http://www.angelfire.com/ak5/2ch-web-program/kako/957208980.html
Part2 http://www.angelfire.com/ak5/2ch-web-program/kako/971817087.html
Part3 http://www.angelfire.com/ak5/2ch-web-program/kako/979894521.html
Part4 http://www.angelfire.com/ak5/2ch-web-program/kako/984430156.html
Part5 http://www.angelfire.com/ak5/2ch-web-program/kako/988728069.html
コピペしただけなんで誰かフォローおながいすます。
0004前の973
02/10/14 17:39ID:???例の通りに実行しても全然動かないのですけど、どうやれば動くのでしょうか?
以下は何もおきずに終わります。
perl gres.pl -e 's!and!or!g' *.txt
以下は"Processed 0 files." と表示されて終わります。
perl gres.pl -v -e 's!and!or!g' *.txt
ファイルを見つけられないのかとファイル名を直接指定すると、
perl gres.pl -e 's!and!or!g' readme.txt
GLOB(XXXX) ←こんなのが画面いっぱいに表示されて、readme.txt は 0 バイトになってしまいます。
未解決なので引き続きおながいします。
まだ動かないので...
┷===〓□┘ ∧=∧ < コテは皆殺しだゴルァ!
_┗ __(゚Д゚ )__\__________________
____ / ̄ ̄ > 7 / /==|=== ̄||
〇 )))) )) ̄ ̄ ̄ ̄ ) ̄)) // Г/ 〇)./ ▽ | ⇒⊥______
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|回 ̄] (( /_7 " / | ☆ / \ > ヽ
__ >――ゝ __ /____ |__\_ノ__ ノ__ノ
∠__ / ̄ ̄ ∠___// ̄ ̄◎ ̄ ̄◎ ̄ ̄ ̄◎ ̄ ̄¬}
〈==={\ ̄ ̄ 〈==={ (◎) (◎)/
ゝ==\\_ ゝ== > ((◎) ((◎) ((◎) ((◎)((◎) /
ゝ==ヽー ̄ ̄ ゝ==ヽ===========
0006nobodyさん
02/10/14 18:33ID:???0007nobodyさん
02/10/14 18:34ID:???0008デフォルトの名無しさん
02/10/14 20:09ID:???0009nobodyさん
02/10/14 20:20ID:BFM6g6aWsoket→connectでsubject.txtの内容を$aに格納してclose
フォルダにあるsubject.txtに$aを書き込むと言う形をとろうとしても
subject.txtには何も書き込まれていないと言う状況です。
どのようにしたらいいのでしょうか?
0010nobodyさん
02/10/14 20:31ID:???00119
02/10/14 20:58ID:b64mpFF2ありがとうございます。
システムコマンドは全く解らないんですが
システムコマンドを使う場合コピーはどうしたらいいんでしょうか?
00131@ ◆Go4ZKngPGE
02/10/14 22:20ID:???#コテハン
だよ。スレ立てのためだけに使ったんだよ。
そんなに必死にならなくてもボク自身は初心者だよ。
コテハン使いたかったキミもそうでないキミも
みんなで仲良く使えばいいじゃん。ネ。
#コテハン
0014nobodyさん
02/10/14 22:32ID:???一般的なことは書けない。WindowsなのかLinux|Unixなのかで
違いますから。
0016質問!
02/10/14 23:38ID:9ZSiyechの下のほう(ライブラリ)のところ・・・
>コメントを記述する場合は
>シャープ( # )の前にセミコロン( ; )を追記する必要がある場合もあるそうです。
とありますが具体的にどういう場合でしょう?
(jcode.plにはセミコロンついてますね)
0018nobodyさん
02/10/14 23:53ID:???0020nobodyさん
02/10/15 00:01ID:???0021nobodyさん
02/10/15 00:05ID:???0022nobodyさん
02/10/15 00:17ID:???0023デフォルトの名無しさん
02/10/15 00:17ID:???プリプロって何よ。
0027nobodyさん
02/10/15 01:23ID:???掲示板作るにCGI使いたいのですが、
HTMLに埋め込む形でテーブルの中に掲示板を入れることってできるでしょうか。
0028デフォルトの名無しさん
02/10/15 01:47ID:???っんだよ。変な言葉覚えちゃったよ。ちょっと:
人
(__)
\(__)/ ウソコー!
( ´A` )
0029nobodyさん
02/10/15 01:47ID:???0030nobodyさん
02/10/15 02:01ID:???0032nobodyさん
02/10/15 02:39ID:nVvEr8H/ありませんでしょうか?
0035nobodyさん
02/10/15 03:41ID:???いっぱいあるよ。
【スレッド】2ch型掲示板 その6【フロート型】
http://pc.2ch.net/test/read.cgi/php/1028384308/
0037nobodyさん
02/10/15 13:43ID:0TY8yVdT“Premature end of script headers”でInternal Server Errorになります。
ヘッダの終わりが早すぎる? やっぱりわかりません。
Mac OS Xでローカルマシンで実行しています。
perlのパスは間違っていないはずです。何が悪いんでしょう?
#!/usr/bin/perl
use CGI qw(:satndard);
print header;
print start_html('Hello');
print h1('This is hello.cgi');
print end_html;
0038nobodyさん
02/10/15 14:20ID:???0040nobodyさん
02/10/15 14:42ID:0TY8yVdTありがとうございます。解決しました。
すみやかに回線切って逝ってまいります。
0041nobodyさん
02/10/15 15:07ID:1tgEM8TW自分で作れっていわれそうですが、先人のプログラムがあれば是非利用してみたいです。
英単語をカウントするものはごろごろ落ちてるんですが、日本語のものってちょっと見つからなくて困っています。
例)
一番は一番で三番は四番。
↓
一番 2
三番 1
四番 1
0042nobodyさん
02/10/15 15:09ID:???0043nobodyさん
02/10/15 16:08ID:???ひらがなで単語を区切る?
じゃあ、これはどうよ。←
「これはどうよ」が一単語かよ。
日本語を単語に区切るにはchasenなどの形態素解析ソフトが必要。
004441
02/10/15 16:45ID:???ご返答ありがとうございます。
茶筅も調べてみたのですが、細かく区切り過ぎてしまうようです。
一連の単語として区切るようなオプションがあれば一番なのですが。。
茶筅例)
拉致被害者→拉致 被害 者
拉致被害者→拉致被害者の一単語としてカウントしたい。
そこで、ひらがな、もしくは記号(、。「」等)で区切ることができればと考えています。
あくまで漢字、カタカナのみで、ひらがなの単語はカウントしないと考えています。
0045nobodyさん
02/10/15 16:51ID:???「これはどうよ」はさ、「これは どうよ」なのか「これ はどうよ」なのかの判断はどうさせる気よ?
すでにPerlの問題でもない気がするけど。
こないだ見たプロジェクトXのワープロ開発の話を思い出したさ。
004642
02/10/15 16:52ID:???文字コード書いてないからSJIS対応で書いた。不完全だけと十分だろ。
map($set{$_}++, split(/(?:\x82[\x9f-\xf1])+/));
0048login:Penguin
02/10/15 19:40ID:???また、PerldBIで構築したサイト教えて下さい
また、強化書ですが、 oreilly の perl dbi が
がいいですか
それともascii のperl DBIの本がいいですか?
0049nobodyさん
02/10/15 20:18ID:???http://pc.2ch.net/test/read.cgi/php/1030209573/
0050nobodyさん
02/10/15 20:34ID:???push@log,$_ while<LOG>;
と
@log=<LOG>;
とで、スピード的、メモリ的な違いは出ませんかね。
調べられないもので。
005351
02/10/15 20:46ID:???スピードは大差ない
Benchmark: timing 1000 iterations of code1, code2...
code1: 1 wallclock secs ( 1.43 usr + 0.00 sys = 1.43 CPU)
code2: 2 wallclock secs ( 1.43 usr + 0.00 sys = 1.43 CPU)
005450
02/10/15 20:51ID:???じゃぁメモリに優しそうな前者を使うのがベターってことですかね。
0057nobodyさん
02/10/15 23:01ID:???何を測りたいベンチなの?
意味のある数字が出ていない気がするが。
--- bench ---
#!/usr/bin/perl
use Benchmark;
timethese( 5, {
handle => q{
open F, '<./test.log' or die;
my @log = (); @log = <F>;
close F;
},
while1 => q{
open F, '<./test.log' or die;
my @log = (); push @log, $_ while <F>;
close F;
},
while2 => q{
open F, '<./test.log' or die;
my @log = (); while (<F>) { push @log, $_ }
close F;
},
});
__END__
> perl -e 'print map { "$_\n" } (0..999_999);' > test.log
> perl bench
Benchmark: timing 5 iterations of handle, while1, while2...
handle: 19 wallclock secs (14.92 usr + 3.61 sys = 18.53 CPU)
while1: 10 wallclock secs (10.52 usr + 0.19 sys = 10.70 CPU)
while2: 12 wallclock secs (11.11 usr + 0.13 sys = 11.24 CPU)
005850
02/10/15 23:56ID:???おおう。省略形のwhileが最速ってことですかこれは。
省略形の方が速いんすね。
そして @log = <F> が一番遅いとは思いませなんだ。
結論として push @log, $_ while <F>; っていう記述が一番よろしいカンジですか。
0060nobodyさん
02/10/16 01:13ID:???0061nobodyさん
02/10/16 02:10ID:???ベンチを競うほどでもないし、自分が好きなやり方でやったほうがいい。
やり方は何通りもあるってやつです。
速度が気になるのなら、
while (<LOG>) {
処理
}
とやるか、いっそCで書き直すというほうがマシでしょ。
006257
02/10/16 04:13ID:???>>57 の数字を信じるなら、100万行*5で せいぜい10秒の差だ。
数千行のファイルをたまに触るだけの人が気にしなきゃいけない
数字じゃない。しかし日常的に数十万行のファイルを*Perlで*
扱っているなら、知っておくべき実験結果だろうな。
やり方は色々ある。どんな風に書くも自由だ。
だけど状況によって最適解は変わる事を常に意識しなきゃだめだ。
0063nobodyさん
02/10/16 05:58ID:???0064nobodyさん
02/10/16 07:32ID:???まあ、数十万行のファイルを触るときに数千行と同じやりかたをするのか?って疑問を
もって欲しいもんだ。
# しかもそれが日常的な場合だと特に。
0065nobodyさん
02/10/16 07:42ID:???普通に効率のいい方を使えばいいっていうだけの話ちゃうの
0067nobodyさん
02/10/16 11:11ID:???localtime の逆関数みたいのないですか?
$year $mon $mday $hour $min $sec --> $epoc にしてくるようなの。
0068nobodyさん
02/10/16 11:28ID:4mkRoll6use Time::Local;
$epoc = &timelocal($sec, $min, $hour, $mday, $mon, $year);
0069nobodyさん
02/10/16 11:36ID:4mkRoll6補足
年は4ケタ(2002とか)、それ以外はlocaltimeと同じでつ。
曜日は求めた値をlocaltimeにかけると分かるです。
不正な値はエラーになっちゃうんでうまく対策してください。
007167
02/10/16 12:01ID:???ありがとうございます。
助かります。
007251
02/10/16 12:58ID:???>何を測りたいベンチなの?
>意味のある数字が出ていない気がするが。
前レスを受けてのベンチだからわかると思ったんだけど・・・
意味のある数字? timing 1000 でとったんだけど・・・
0073nobodyさん
02/10/16 13:15ID:???だからさ、高負荷をかける状況になる場合、ファイル丸ごと変数に取り込む
ようなことしないよね。ってことから意味のある数字かどうか考えたらいいんじゃないか?
東京大阪間を最短で歩くコースを考えてくれても、「なんで新幹線乗らないの?」って
言われたらおしまい。これと同じこと。
0074nobodyさん
02/10/16 13:27ID:???$hoge =~ s/0/0/g;
$hoge =~ s/1/1/g;
$hoge =~ s/2/2/g;
これを9まで続けるでいいでしょうか。
0076nobodyさん
02/10/16 13:40ID:???ttp://www.din.or.jp/~ohzaki/perl.htm#JP_Z2H
まぁ、そのやり方が一番楽だと思うよ。
0077nobodyさん
02/10/16 13:43ID:???open(F,"test.log");
my @log = (); push @log, $_ while <F>;
#@log = <F>;でもどっちでもいいよこの際。
close(F);
foreach(@log){
....
}
より
open(F,"test.log");
my $log = '';read(F,$log,-s "test.log");
close(F);
while($log =~ /\G([^\r\n]+)[\r\n]+/g){
....
}
とかにした方が全然速くない?
特に「ファイルを早く閉じたいから一気読みしてる」とか言ってる奴が
前者を使う理由がわからない。
#for$n($start..$end){$log[$n]の加工}とかで一部だけ
#加工したいなら読み込み段階で素直に
#while(<F>){$n++;next if($n < $start);last if($n > $end);$_の加工}
#とでもした方が全然速いし当然メモリはほとんど使わないし。
0078nobodyさん
02/10/16 13:44ID:???ありがとうございます。
とりあえず今は数字しか必要ないので今のやり方でやります。
007973
02/10/16 14:41ID:???それを前提にしたベンチやってても、その結果を考慮に入れる香具師は
いないってこと。
0080nobodyさん
02/10/16 14:50ID:???逆じゃないの?
一気にメモリに読み込む仕様にした時にでかいファイルを読まれたら
どうなるかは視野に入れて作った方が良いというか。
製作者の意図通りに使ってくれない人なんて沢山いるだろうし。
0081nobodyさん
02/10/16 15:12ID:???だからね、
「一気にメモリに読み込む仕様にした時にでかいファイルを読まれたら
どうなるかは視野に入れ」たら、普通そういう仕様にしないでしょ。
検討はしましたが、実際には使いませんね、でいいじゃん。
制作者の意図って誰の意図? Larryのことか?
■ このスレッドは過去ログ倉庫に格納されています