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

Perlコーディング初心者質問スレ Part 50

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001nobodyさん2006/06/26(月) 00:46:38ID:???
Perlのコーディングで困ってる人のスレです。

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

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

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

過去ログやお勧めサイトは >>2-10
0877nobodyさんNGNG
ベンチ取ったら5倍も違ったー
0878nobodyさん2006/07/22(土) 18:50:39ID:???
>>876

$ perl 876.pl 2>/dev/null
Benchmark: timing 1000000 iterations of bare, quote...
bare: 2 wallclock secs ( 0.78 usr + 0.53 sys = 1.31 CPU) @ 762776.51/s (n=1000000)
quote: 1 wallclock secs ( 0.96 usr + 0.56 sys = 1.52 CPU) @ 657030.22/s (n=1000000)

$ cat 876.pl
use Benchmark;

my $foo = 'bar';
timethese(1_000_000,
{'quote'=>sub {print STDERR "$foo";},
'bare'=>sub {print STDERR $foo;},
});
0879nobodyさん2006/07/22(土) 18:55:33ID:???
DWIMの言語なわけで、プログラマーのわがまま通りにかけるのも
魅力のひとつだと思う・・・
0880nobodyさん2006/07/22(土) 19:40:53ID:???
$ perl 876.pl
Benchmark: timing 1000000 iterations of bare, quote...
bare: -1 wallclock secs ( 0.11 usr + 0.00 sys = 0.11 CPU) @ 9090909.09/s (n=1000000)
(warning: too few iterations for a reliable count)
quote: -1 wallclock secs ( 0.20 usr + 0.00 sys = 0.20 CPU) @ 5000000.00/s (n=1000000)
(warning: too few iterations for a reliable count)
$ cat 876.pl
use Benchmark;

my $foo = 'bar';
timethese(1_000_000,
{
'quote'=>sub {$boo="$foo";},
'bare'=>sub {$boo=$foo;},
});
printしないとこんなかんじ
0881nobodyさん2006/07/22(土) 21:43:50ID:???
>>876
"" で括るのは、新しい文字列の生成という意味だから、最適化はされないよ。
-MO=Deparse 付けてみても、"$foo" そのまま。
0882nobodyさん2006/07/23(日) 01:44:22ID:NrRWf3Mx
どうでもいいけど、次スレから
「Perl・CGIコーディング初心者質問スレ」
に変えるべきだと思う。
0883nobodyさん2006/07/23(日) 01:46:04ID:BeERA3x6
>>872
念のため言っておくけどハッシュにすると遅いよ。
可読性があがるからコーディングが早いってだけ

でもハッシュ使っとけ
0884nobodyさん2006/07/23(日) 02:08:35ID:???
>>882
"CGI コーディング" ってなんだ?
0885nobodyさん2006/07/23(日) 02:19:16ID:???
>>872
速さを求めたいならはじめに両方の要素をソートしておくことをお勧めする。
もちろんそれに応じたコーディングも必要だが要素数が多ければ目に見える効果があるはず。
0886nobodyさん2006/07/23(日) 03:06:54ID:???
拾ってきたコードに
if ($ENV{'PERLXS'} eq "PerlIS") {
print "HTTP/1.0 302 Temporary Redirection\n";
print "Content-type:text/html\n";
}
という記述があったんですが意味がよく分かりません。
分かる人、翻訳お願いできませんか?
0887nobodyさん2006/07/23(日) 03:31:22ID:???
>>886
検索したらすぐに解ったが…
ttp://www.att.or.jp/perl/faq/perlwin32faq/perlwin32faq7j.html#My_CGI_scripts_don_t_seem_to_run
ttp://www.att.or.jp/perl/faq/perlwin32faq/perlwin32faq7j.html#How_does_my_script_know_if_it_s_

「ISAPIで実行されていたらステータス行とContent-Typeヘッダ吐き出せ」
08888862006/07/23(日) 03:35:53ID:???
>>887
すみません。まさか検索で引っかかるとは思いが至らず・・・。
要は削除してしまっても問題ない箇所なんですね。
こんな時間にありがとうございました。
0889nobodyさん2006/07/23(日) 03:44:25ID:671DuE1H
>>874
うざいよ、藻前。
>my $foo = "hoge";
>print "$foo";
>みたいに文字列を無駄なダブルクォートで囲う人が居なくなって欲しい。
上のは必要。下のは"$foo\n"が普通なので必要。ちなみに$foo,"\n"より速い。
0890nobodyさん2006/07/23(日) 11:48:54ID:???
>>889
>上のは必要
お前、何当たり前の事言ってんだ…。

>下のは"$foo¥n"が普通なので必要
コード違うじゃん。誰が改行付ける時の話してる?
0891nobodyさん2006/07/23(日) 11:56:10ID:???
ここは初心者質問スレ
0892nobodyさん2006/07/23(日) 12:16:20ID:rog/ar/G
誰か教えてください。
perl-5.8.8で、URLエンコーディングのデコードをやりたいと思っています。
以下の様にやってみました。

 use encoding "euc-jp";
 $str = "%C6%FC%CB%DC";
 $str =~ tr/+/ /;
 $str =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack('H2', $1)/eg;
 print $str;

が、何も出力されません。

use encoding "euc-jp" を除くと正しく出力("日本")されるのですが、
この部分は入出力の関係上できればのこしておきたいと思っています。

どうしたら解決できるか、どなたかお分かりの方教えてください。
0893速さ順2006/07/23(日) 13:08:12ID:???
$foo."\n"
"$foo\n"
$foo,"\n"

こんな感じか?それなら文字列連結でいいんじゃね
0894nobodyさん2006/07/23(日) 13:30:13ID:???
>>892
これじゃだめなの?
use encoding "euc-jp";
{
  no encoding;
  $str = "%C6%FC%CB%DC";
  $str =~ tr/+/ /;
  $str =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack('H2', $1)/eg;
}
print $str;
0895nobodyさん2006/07/23(日) 14:44:30ID:???
>>890
なんかこないだから一人ずれてるのいるよね・・・。

>>892 がなんで use encoding 下でダメなのか説明おねがいえらいひと。
0896ヽ(´ー`)ノ ◆.ogCuANUcE 2006/07/23(日) 17:23:10ID:???
>>892
解決法は >>894、もしくは use encoding を使わない。

理由は perldoc encoding の DO NOT MIX MULTIPLE ENCODINGS のあたりを参照。

use encoding "euc-jp";

my $str = '%C6%FC%CB%DC';

print "before: $str (" . length($str) . ")\n";

$str .= "\xFE";

print "after : $str (" . length($str) . ")\n";

use encoding については、作った本人が「使うな」と言ってる上に、
副作用が多すぎる。
新規で書くコードに関しては、Encode.pm で適宜変換するようにして、
文字リテラルには ascii しか書かないか、use utf8 をして utf-8 に
統一してしまうかの、どちらかを選択するべき。
古いコードで use encoding しているものは、no encoding で逃げるか、
駄目なら書き直すべし。

知ってる人間が use encoding 使ってたら、確実に殴る。
0897nobodyさん2006/07/23(日) 17:35:06ID:???
print << "HOGEHOGE";
unko
HOGEHOGE

これの << ってなんだっけ
名称をどわすれした
0898nobodyさん2006/07/23(日) 17:51:27ID:???
ヒアドキュメント Here Document
0899nobodyさん2006/07/23(日) 18:45:27ID:???
>>896
ああ、そうか。 なるほどねー。
use encoding "euc-jp"; 下では
$str = "\xc6";
$str .= "\xfc";
$str .= "\xcb";
$str .= "\xdc";
こう書いても $str は "日本" ってはならないわけだな。 ic ic
0900nobodyさん2006/07/24(月) 01:13:30ID:ga9J27XZ
^が改行の直後にマッチしません!!
0901nobodyさん2006/07/24(月) 02:23:23ID:???
mオプションつけたらできた
0902nobodyさん2006/07/24(月) 10:35:48ID:78lGpjq9
# $timeには動いた時の時刻が入っています
open FH,"+>>test.log";
seek FH,0,0;
print FH "$time","\n";
close FH;

test.logの先頭に一行新しく入れたいのですが、これだと末尾に一行追加されます・・・・
多分+>>のせいだと思いますが、先頭に入れようとしたら、

my @list=<FH>;
truncate FH,0;
print FH $time,"\n";
print FH @list;

とするしかないのでしょうか?
なんかいちいち一旦全部配列に入れてファイルを消してってのが嫌です。
09039022006/07/24(月) 10:39:56ID:78lGpjq9
あ、後者のコードに
seek FH,0,0;
がないと@tempに何も入りませんね。

しかしなんでそこでのseekは効くのに、前者の方ではうまくいかないんだろう
09049022006/07/24(月) 11:25:03ID:78lGpjq9
うお。今日誰もいないのね。
0905nobodyさん2006/07/24(月) 11:51:01ID:???
受信メールをPerlで受けて処理したいのですが、パースするモジュールとかありますか?
0906nobodyさん2006/07/24(月) 11:56:03ID:???
115311
こういうフォーマットの文字列を
11時53分11秒
に変換したいです。
なるべく短い記述ですませいたいのですが。

できれば2バイトずつで自動スプリットできればそのままsprintfに渡せるのですが。
substrを3個も書いてsprintfに渡すのはなえますよね。
0907nobodyさん2006/07/24(月) 12:03:49ID:???
>>906
>>396,397
0908nobodyさん2006/07/24(月) 12:22:19ID:???
>>902

基本的に追記はファイル末尾に行う。
読み出し方を工夫したほうがいい。
0909nobodyさん2006/07/24(月) 12:23:35ID:???
906

>>907
そういえば正規表現でいけましたね。ありゃ()がミソでしたね確か。

396は本当になるほど!って感じです。
unpackはまるで使いこなせていないままでしたが便利なものですねこれ。

09109052006/07/24(月) 12:35:23ID:TyNTrbq3
http://digit.que.ne.jp/work/wiki.cgi?Perl%e3%83%a1%e3%83%a2%2fPerl%e3%81%a7%e3%83%a1%e3%83%bc%e3%83%ab%e3%82%92%e5%8f%97%e3%81%91%e3%82%8b#pparse%2dbody
↑は見つけましたが1年ほど前なので、他にありますでしょうか?
0911nobodyさん2006/07/24(月) 13:02:47ID:???
>>902
基本的に内容消さないで最初の行に追加する方法は無いと思う。
解決法としては、逆に、使うときに、my @list = reverse <FH>;
とか、foreach(reverse <FH>)
とかするとか、・・・
0912nobodyさん2006/07/24(月) 13:16:16ID:???
search.cpan.org がアドレス解決できないもうだめだ
09139022006/07/24(月) 13:20:39ID:78lGpjq9
やっぱり・・・
あきらめス。
ありがとうございす。
0914nobodyさん2006/07/24(月) 15:16:26ID:???
>>911

馬鹿、またそうやって全部メモリに読み込んで。
しかも foreach でもう一度展開して。
勘弁してくれ。

>>913

http://perldoc.jp/docs/modules/File-ReadBackwards-1.02/ReadBackwards.pod

>このモジュールはファイルを行単位で逆方向に読み込みます。
>使い方は簡単で、メモリの使い方は効率的で高速です。
>オブジェクトとtieされたハンドル・インターフェイスの両方を
>サポートしています。

使わない理由は無い。
0915nobodyさん2006/07/24(月) 16:33:06ID:???
う〜ん、とりあえず巨大ファイル扱うようなコード書かないので、
正直メモリ展開とか実感できない・・・1ミリ秒か100ミリ秒かとか体感違いないので・・・
昔のコンピュータを使ったこと無いってのもあるかも・・・
0916nobodyさん2006/07/24(月) 16:40:34ID:???
まあ、その辺の違いが致命的な仕事したくなったらperlはプロトタイプで、
cとかで実装するかなぁ・・・と思う、・・・(今のとこそういうプロジェクトの予定無し・・・

個人的にforeach(reverse <fh>){.....}なんかは見やすいのでがんがん使う。
まあ、遅いって言ってもせいぜい多項式オーダーの遅さだと思うので、あまり気にしない
指数オーダーだったら大変だが・・・w
0917nobodyさん2006/07/24(月) 16:58:47ID:???
だいたいは読むより書く方が頻度少ないんだから、黙ってファイルの最初につけて書けばいいやんね。
my @list=<FH>; はよろしくないけどw
0918nobodyさん2006/07/24(月) 18:27:39ID:LY53xScL
package HOGE::List;

↑のように、パッケージファイル(List.pm)を更新しても、Webページで反映されません。
.cgiを持つ拡張子のファイルは反映されます。
これはどのようなことが原因ですか?
どのようにすればList.pmで書き換えた内容の更新が反映されるようになりますか?
0919nobodyさん2006/07/24(月) 18:44:08ID:???
>パッケージファイル(List.pm)を更新しても、Webページで反映されません。
んな訳ない
0920nobodyさん2006/07/24(月) 18:46:52ID:???
mod_perl?
0921nobodyさん2006/07/24(月) 18:58:52ID:???
どうせアップロードし忘れてるんでしょうね
0922nobodyさん2006/07/24(月) 19:16:35ID:???
mod_perlだとキャッシュが残っちゃうときあるよな
0923nobodyさん2006/07/24(月) 19:24:17ID:???
書き込みの質問が読み込みの質問にされてる件
0924nobodyさん2006/07/24(月) 19:40:51ID:???
同名のファイルを別のとこにあげてて、そっち取られてるとかはたまに俺もやるw
0925nobodyさん2006/07/24(月) 19:46:47ID:???
>>902
テンポラリファイル作って一行出力してから元ファイルから残りを追記後
リネームでもできるけど一緒にロックせにゃならんし残った後のこともあるな。
>>906
substr($str,0,2),substr($str,2,2),substr($str,4,2)
でもできるだろう。数字と判定してからのほうがよいと思うけど。
0926nobodyさん2006/07/24(月) 19:52:51ID:???
>>925
本人が萎えると言ってる方法を提示してどうする…。
0927nobodyさん2006/07/24(月) 20:13:17ID:???
>>906
$date = "115311";
$date =~ s/(\d\d)(\d\d)(\d\d)/$1時$2分$3秒/;
0928nobodyさん2006/07/24(月) 20:49:14ID:???
悪い見逃してた。まあ自分なら正規表現使うな
0929nobodyさん2006/07/24(月) 20:53:25ID:???
わざわざまともなスクリプトかけないこと暴露しなくていいのに
0930nobodyさん2006/07/24(月) 21:09:27ID:???
初心者の初心者による初心者のためのスレなんだから、仕様ですね。
0931ヽ(´ー`)ノ ◆.ogCuANUcE 2006/07/24(月) 21:16:05ID:???
個人的には POSIX::strptime が好みだな。

残念ながら、標準では入ってないが。
0932nobodyさん2006/07/24(月) 21:54:20ID:???
>>905
つ MIME::Parser
0933nobodyさん2006/07/24(月) 22:22:30ID:IKH596di
はじめまして、kent webさんのttp://www.kent-web.com/bbs/
YY-BOARDを使っていますが最近英語の荒らし書き込みが増えちゃって困っています
そこで相談したところ「半角のみの投稿を禁止すればよい」という話を
聞いたのですが実際にスクリプトを変更する技術がなく出来ませんが
どなたか実際に使っている方などいたりしませんか?
アドバイスよろしくお願いいたします。
0934nobodyさん2006/07/24(月) 22:46:14ID:???
>>933
KENT WEB総合スレへドゾ。改造方法もあるでよ。

http://pc8.2ch.net/test/read.cgi/php/1078991985/450-
09359332006/07/24(月) 23:13:25ID:???
>>934
ありがとうございました。そのような記事があるのを見落としてました・・
0936nobodyさん2006/07/24(月) 23:59:23ID:cgyCzAHv
以前、下記の質問をした際に「過去ログに書いてある」との事でしたが
見つけた内容は行いたい処理とは違う物しか発見できませんでした。
どなたか、下記の内容について処理方法を概要だけでも結構ですので
ご教授お願い出来ないでしょうか?宜しくお願い致します。

----
HTML内のフォームからファイルと時間を選択させて、
その時間になったら自動で指定ファイルをFTPで別サーバー
へ移動するという処理は可能でしょうか?
Perlでcrontabに書き出すことができればと思いましたが
レンタルサーバーでそれは許可されておりません。
cronを使用せずにperlにより指定時間になっているかどうかを
チェックして時間になっていたらFTPでファイルを移動
するような処理は可能なのでしょうか?
0937nobodyさん2006/07/25(火) 00:19:33ID:???
>cronを使用せずにperlにより指定時間になっているかどうかをチェック

この場合プログラムが能動的に動くことは不可能。
ただスクリプトがアクセスされたときに指定時間になっているかをチェックすることは十分可能。

ほかはperlの機能としては全て可能だが、サーバーにより制限がかかっている場合もある。
0938nobodyさん2006/07/25(火) 00:30:15ID:???
自分のPC常時つけといて、時間チェックしてファイル移動するcgiに、JavaScript使って1秒ごとにアクセスすればいいんじゃね?
0939nobodyさん2006/07/25(火) 00:43:59ID:???
forkさえ使えればゴニョゴニョ(ry
0940nobodyさん2006/07/25(火) 00:46:36ID:???
いっそメール経由で自鯖に送信して自鯖からFTPうp
0941nobodyさん2006/07/25(火) 00:48:44ID:???
perl -MCPAN -e shell でインストールする場合、
最新版がインストールされますが、
昔のバージョンを指定し、かつ、そのバージョン
と依存関係のあるものをインストールすることって
できますか?
0942nobodyさん2006/07/25(火) 01:08:00ID:???
>この場合プログラムが能動的に動くことは不可能。
そうですか。有難うございます。
やはりcrontabに書かせるしかないのですね・・・
ホスティングでcrontabを変更できる所は日本であるのでしょうか?

>fork
forkで時間指定になるまで子供を常駐させるという事なのでしょうか?
もう少し詳しく教えていただけないでしょうか?
0943nobodyさん2006/07/25(火) 03:11:29ID:???
デイリーのスクリプトを指定できるのは知ってる
0944nobodyさん2006/07/25(火) 09:30:20ID:???
>>937
>この場合プログラムが能動的に動くことは不可能。
無限ループ内にsleepなり時間チェックの関数書いとけば可能。
ただ、>>937の言うように「サーバーにより制限がかかっている場合」に注意。
0945nobodyさん2006/07/25(火) 10:15:47ID:???
もっと別のやり方考えたほうがいいよ
なにがしたいのかわからんけど。
0946nobodyさん2006/07/25(火) 11:45:48ID:???
サーバーの設定で run time に制限かかってなくても、酷いスクリプトは管理者によって kill されるか、
パーミッションをいじられて実行不可にさせられるのが共有サーバー。
自鯖にするか占有を借りれば好きかってできるかと。
09479022006/07/25(火) 11:52:35ID:kxudY76D
>>914
せっかくなのですが。
ファイルの一番上の行に書き込む時より、全部を読み込んで処理して表示する時の
方が他にも処理があり、頻度も五分ですのでアsdgjな;ぐあwbんrgぅじぇbんぎl

ファイルに書き込むときに最上部に書いた方が今回の場合はグラッリェなのです。

すいません。ありがとうおざいます。もう肌がヒリヒリしてたえられrません。
病院にいきってててててててえてtwえまsづあsd。あdgsgfdsあ
09489022006/07/25(火) 11:56:06ID:kxudY76D
>>917
>my @list=<FH>; はよろしくないけどw

どうしてですか?一見完璧に見えますが。実のところ落とし穴があるのでしょうか?
やっぱり違いますねこのスレは。なんかプロに教わってる感じで最高です。

お返事お待ちしております。とりあえず病院に行ってきます。
なんか肌がボロボロやぶれて血だらけになってしまいました。
なんですかね。これ・・・・orz
0949nobodyさん2006/07/25(火) 12:06:57ID:???
>>944
>無限ループ内にsleepなり時間チェックの関数書いとけば可能。

何か勘違いしてないか?
お前のサーバーでは無限ループの中にsleepなり時間チェックの関数書いたプログラムが勝手に立ち上がるの?
結局そのプログラム自体は誰かからアクセスされることによってしか起動し得ないわけでしょ?
そもそも時間がたてば普通にkillされるし。
0950nobodyさん2006/07/25(火) 12:11:52ID:???
とりあえず病院池www
0951nobodyさん2006/07/25(火) 12:13:12ID:???
> そもそも時間がたてば普通にkillされるし。
0952nobodyさん2006/07/25(火) 12:17:22ID:???
最初の起動はコマンドラインから叩けばいい
あとは時間チェックとスリープ組み込んだ無限fork
絶対怒られるけど。
0953nobodyさん2006/07/25(火) 12:32:25ID:???
>>952
失敗するとゾンビが腐るほどたまったりするからなw
0954nobodyさん2006/07/25(火) 13:25:59ID:???
http://sourceforge.net/project/showfiles.php?group_id=74976
qmHandle って最新Ver1.2.0でDecember 10, 2003なんだけど、
今だったらもっといいスクリプトとかあるかな?教えてエロイひと
0955nobodyさん2006/07/25(火) 13:55:36ID:???
>>948
ィ�`w

@list って配列他に使わないのであれば、<FH> するより一気に read した方がいいよ、ってことかな。
0956nobodyさん2006/07/25(火) 13:59:10ID:???
うちの環境では<FH>の方がreadより若干速い。
0957nobodyさん2006/07/25(火) 14:00:52ID:???
>>956
1行1行読む <FH> でのこと? うそやろ・・・(´・ω・`)
0958nobodyさん2006/07/25(火) 14:53:00ID:???
ファイルを何らかのマーカー(一般には改行文字)で区切って読み込む場合

open FH, 'example.data';
my @list = <FH>
foreach( @list ){
処理
}

より

open FH, 'example.data';
while( <FH> ){
処理
}

のほうが一般に高速、メモリの使用量も少ない。
前者はファイルに保存してある情報を全てメモリ上にぶちまけた上でその情報を使って処理するのに対して、
後者はそのときの処理に必要な部分のみをファイルからメモリに読み取って処理を行う。

ディスクアクセスのキャッシングは OS がシステム全体の状況に応じて行ってくれるので
間欠アクセスによるシークロスは気にする必要は無い。
0959nobodyさん2006/07/25(火) 14:57:44ID:???
>>892
use encoding qw(euc-jp);
use Encode qw(from_to encode decode);

my $str = "%C6%FC%CB%DC";
$str =~ tr/+/ /;
$str = encode("utf8", $str); # utfフラグを落とす
$str =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack('H2', $1)/eg;
from_to($str, "euc-jp", "utf8"); # 変換
$str = decode("utf8", $str); # utfフラグを付ける
print $str;

でだめなん?
0960nobodyさん2006/07/25(火) 16:17:48ID:p7nXlRS6
アップローダーを作成したのですが、15M程度のファイルなら
問題なくアップできるのですが、100M近いものになると
「ページを表示できません。検索中のページは現在、利用できません。
Web サイトに技術的な問題が発生しているか、ブラウザの設定を調整
する必要があります。」
のエラーが発生してしまいます。
CGIでのファイル制限は設けていないのですがこのような症状になって
しまいます。どなたかご存知の方ご教授お願い致します。
0961nobodyさん2006/07/25(火) 16:28:28ID:???
timeoutとか
0962nobodyさん2006/07/25(火) 16:42:24ID:???
>timeoutとか
timeoutはアップの途中でも起こることなのでしょうか?
もしそうだとしたらtimeoutを防ぐ(ごまかす?)手段などはありますか?
0963nobodyさん2006/07/25(火) 16:50:00ID:???
レン鯖デバッガーかよ。しかもIEの簡易エラー表示なんてもってのほか。
0964nobodyさん2006/07/25(火) 17:04:06ID:???
>しかもIEの簡易エラー表示なんてもってのほか
申し訳ありません。下記がログに残されているメッセージです。
CGI.pm: Server closed socket during multipart read (client aborted?).
0965nobodyさん2006/07/25(火) 17:20:00ID:???
>>964
CGI.pmが腐ってるんじゃないの
自分でparseしたら
0966nobodyさん2006/07/25(火) 19:41:41ID:???
>>965
おいおい
0967nobodyさん2006/07/25(火) 19:54:02ID:???
>CGI.pmが腐ってるんじゃないの

みたいに適当な初心者が

>自分でparseしたら

ですか。
お前にCGIモジュール以上のものが書けるのかと問いたい問い詰めたい、小一時間ほど。
どうせおまえ KEMT からコピペするだけと違うんかと。
っていうか server も close も socket も during ...も中学レベルの単語じゃねぇか。
0968nobodyさん2006/07/25(火) 20:00:23ID:???
富○県から引っ越すんだ!!
0969nobodyさん2006/07/25(火) 21:50:03ID:???
>>964
てことはクライアント側でなんか起こってるんじゃないの?
どうしてもだめならファイル自体分割するとか・・・
0970nobodyさん2006/07/26(水) 10:23:21ID:???
apacheなら入力出来るサイズをhttpd.confで増やす。
phpならphp.iniで入力サイズを増やす。
あと、perlならアップするファイルサイズの約二倍の物理メモリを。

そしてもう来るな
0971nobodyさん2006/07/26(水) 11:01:41ID:???
>>970
>そしてもう来るな
?
0972nobodyさん2006/07/26(水) 11:37:01ID:???
> あと、perlならアップするファイルサイズの約二倍の物理メモリを。

それはすごい perl ですね。
0973nobodyさん2006/07/26(水) 11:37:58ID:???
SJISから特定の文字列($target)を[16進]で置き換えたく以下の処理をしてるんですが、

sub change{
my ($in) = @_;
my $sjis_str = '[\x81-\x9F\xE0-\xF7\xFA-\xFC][\x40-\x7E\x80-\xFC]|[\x00-\x7F]|[\xA1-\xDF]';
my $target = '[\xF7][\x41-\x9B\xA1-\xFA]|[\xF9][\x41-\x9B\xA1-\xED]|[\xFB][\x41-\x8d\xA1-\xD9]';
$in =~ s/\G((?:$sjis_str)*)($target)/$1.'['.unpack('H4',$2).']'/ego;
return $in;
}

sjisとtargetがかぶってしまっています。$sjis_strから$targetを除くとどう表現できますかね?
文字コードテーブルはよーわからんヽ(+∇+)ノ
0974nobodyさん2006/07/26(水) 12:04:59ID:JkK9HWj1
2006724,hogehogehogeoegoegeg
2006723,akjhkadghjhgiower

Text::CSV_XSを使ってCSV形式で保存してます。
アクセスログなので結構膨大です。
日付別に分別したいのですが何かいい案はありますか?
ハッシュのキーに数字のみが使えたらよかったですが。無理ですし。
で、まあdateとかつけようと思ったのですが。
push @$hash{date$temp[0]},$csv->string();
みたいな。

なんかうまくいきませんね。グローバルシンボルじゃボケエラーがでますが。
もちろんmy宣言はしてるのです。問題なく。
でりふぁれんす部分がおかしいかキーの中のやり方がおかしいかですね。


09759742006/07/26(水) 12:13:15ID:JkK9HWj1
勘違いorz

push @{$hash{$temp[0]}},$csv->string();
で動いた。
っていうかperlってキーに数字のみも使えるのね。便利すぎ
0976nobodyさん2006/07/26(水) 12:13:57ID:???
まあ数字も文字なわけで・・・
レス数が950を超えています。1000を超えると書き込みができなくなります。