2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

【Perl】初心者コーナー Part16

1 :3PIO ◆3pIoOHKo :02/09/15 15:11 ID:???
いらっしゃーい、Perlの「コーディング」で困ってる人のスレです。

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

1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。

CGIだけど、なんか質問ある? Part 6 (その2)
http://pc.2ch.net/test/read.cgi/php/1025930486/
参考書籍の話題は【【Perl,CGI】参考書籍 第2版】
http://pc.2ch.net/test/read.cgi/php/988809842/
その他の雑多な話題は、【CGIに依存しないPerlの話題一般】
http://pc.2ch.net/test/read.cgi/php/991313362/
スクリプトの改造依頼は 【スクリプト改造工房 Part4】
http://pc.2ch.net/test/read.cgi/php/1012839651/

過去ログ、その他の役立ち情報は>>2-10あたりを見よう。

851 :nobodyさん:02/10/10 08:25 ID:???
>>850
送られてきたSTDINを何も処理せずにファイルに書き出して見れ。

852 :848:02/10/10 09:15 ID:rBn0TZDO
>>851
main7.gifを送ったんですが、↓この辺のことでしょうか?

-------------------------------7d238f34a0412
Content-Type: application/octet-stream; name="main7.gif"
Content-Transfer-Encoding: X-uuencode
Content-Disposition: attachment; filename="main7.gif"

begin 644 main7.gif





853 :848:02/10/10 09:30 ID:Y9RZ82Gy
>>851
>>852は、なんでもないです。
で、その処理する前のモノは、cgiをいじらないと取り出せないのでは?

854 :しろうと:02/10/10 11:22 ID:rv3sQjTv
はじめまして.ちょっと教えて下さい.

web初心者なりにがんばって,アクセス解析用フリーCGIスクリプトのefStat
(ttp://www.skipup.com/~fuka/) というのを設置してみたのですが,アクセス
解析結果の検索ワード欄が文字化けしてしまい,調べてみると,どうも日本語
文字コードを扱うルーチンjcode.plというのが古すぎて,Jcode.pmというのに
変えなければならないということが分かりました.

ところが,闇雲に jcode.pm その他を cgi-bin/fstat/lib/ 下に置き,
fstat.cgi (アクセス解析スクリプト) を実行すると Internal Server Error
になってしまいます.

/usr/local/apache/logs/error_log を見ると,

Can't locate object method "new" via package "Jcode" at lib/start.pl line 62.
Compilation failed in require at /home/****/public_html/cgi-bin/fstat/fstat.cgi line 111.
[Wed Oct 9 15:57:38 2002] [error] [client ***.***.***.***] Premature end of script headers: /home/****/public_html/cgi-bin/fstat/fstat.cgi

こんな感じでした.

サーバはRH Linuxの7.0か7.1程度,Perlのバージョンは5.6.0です.


Jcode.pm利用への手順など,簡単に教えて頂けませんでしょうか?また,サー
バのrootに何かしてもらう必要はありますか?

宜しくお願いします.

855 :849:02/10/10 12:02 ID:ZvzQ38ZZ
>>850
画像でもオフィス文書でもメールに添付するときにはMIME BASE64というエンコード
で、テキストに変換しているのです。 Outlook Expressなどのメーラは、そういう生の
データを見る方法があるのかどうなのかしりませんが、

------------92AECG1NXU3WZAT
Content-Type: audio/x-midi;
name=Setup.exe
Content-Transfer-Encoding: base64
Content-ID: <B1i55vjBs7G1k>

TVqQAAMAAAAEAAAA//8AALgAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAA4AAAAA4fug4AtAnNIbgBTM0hVGhpcyBwcm9ncmFtIGNhbm5vdCBiZSBydW4gaW4gRE9TIG1v
ZGUuDQ0KJAAAAAAAAABxdTv8NRRVrzUUVa81FFWvTghZrzEUVa+2CFuvNxRVr90LX68gFFWv3QtR
rzcUVa9XC0avPhRVrzUUVK+OFFWv3QterzoUVa+NElOvNBRVr1JpY2g1FFWvAAAAAAAAAABQRQAA
TAEDAF1Flz0AAAAAAAAAAOAADwELAQYAAMAAAAAQAAAAQAYAQA0HAABQBgAAEAcAAABAAAAQAAAA
AgAABAAAAAAAAAAEAAAAAAAAAAAgBwAABAAAAAAAAAIAAAAAABAAABAAAAAAEAAAEAAAAAAAABAA

添付書類はこういう感じになって普通の文章の後ろについています。
だから、そういったメールを見て、ちょうど何文字くらいで切れているとか
何行くらいで切れているとかというのがわかれば、そこらへんに原因が
あるのかなぁと。


856 :nobodyさん:02/10/10 12:05 ID:ZvzQ38ZZ
>>854
まあ、とりあえずここでも読んでください。
http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&oe=UTF-8&q=Jcode%2Epm+%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB

857 :しろうと:02/10/10 12:14 ID:???
856さん,

ありがとうございました.要点は,システムへのインストールが必要なので,
root に頼んで,きちんとインストールしてもらわなければならないものだと
いうことですよね?

何となく分かってきました.ありがとうございました.

858 :848:02/10/10 12:31 ID:0YXqHo+t
>>855
あ、やっぱ、ソレだったんですか・・・
852から始まって、最後5行が、




MARSRR"27;+(PO:&I3L<>^T4Q3IA<3#$C+IUL\\TXYZSSK36AP^+.0`<M]-!$
J`]VSLT4GK?323#>-%BH@.RWUU%17$FWU(R[]?/767'?M]==@AZU:(``[
`
end
-------------------------------7d238f34a0412--

↑こんな感じなんですが、コレじゃあわかんないですよね?

あ、コレ、Yahoo!のトップの画像なんですけど、(main7.gifってやつです)

859 :848:02/10/10 12:45 ID:???
>>858
> 852から始まって、

>>852
> -------------------------------7d238f34a0412
> Content-Type: application/octet-stream; name="main7.gif"
> Content-Transfer-Encoding: X-uuencode
> Content-Disposition: attachment; filename="main7.gif"
>
> begin 644 main7.gif
> ・
> ・
> ・
から始まって・・・って意味です

860 :849:02/10/10 13:48 ID:???
それを見る限りでは、いちおうbeginで始まって、endまで見えているからたぶん
メールが途切れていることはないと思います。となると一から考え直しですが、
ぐちゃぐちゃになった画像ファイルはサイズも変わっていますか?


861 :848:02/10/10 14:10 ID:084tFYZP
>>860
Yahoo!Top画像(main7.gif) 6.67 KB (6,837 バイト)
メールを通したもの 6.63 KB (6,792 バイト)

です。若干縮んでますね。

862 :nobodyさん:02/10/10 14:41 ID:???
>>861
サーバの OS は? Win系だったら

231: if (!open(OUT,"| $nkf -j | $sendmail -t")) { &error('Error'); }
232: binmode OUT; # 追加
233: $host = $ENV{'REMOTE_HOST'};

かも知れない。Win でパイプなんて使った事ないから、
binmode 要るのかどうか知らんけど。

863 :nobodyさん:02/10/10 14:41 ID:Nn4CcN7j
>>861
cgiスクリプトの
if (-e "$tmp$filenum") { unlink("$tmp$filenum"); }
をコメントにして、アップロードが正常に出来ているか確認してみては。
./tmp/ディレクトリにアップされた画像を表示してみる。
異常だったらアップロードが変
正常だったらuuencodeが変

864 :質問:02/10/10 14:44 ID:???
ログ100行の中からwhileで10行処理するのと、
ログ200行の中からwhileで10行処理するのとは
スピードは変わらないんですか?

865 : :02/10/10 14:52 ID:???
>>864
具体的なソースを出してくれなきゃ、「そんなにかわらない」としか
言えない。けど、いまどきのコンピュータで100行の処理と200行の
処理で違いがでるほどのことがあるのかな。



866 :質問:02/10/10 14:55 ID:???
>>865
舌足らずですみません。
配列操作でないならスピードは同じなのか、ということを
知りたかっただけなので、100行と1兆行でもいいです。

867 :862:02/10/10 14:59 ID:???
ごめん、>>862 は嘘。Win系だと臭いのはこっち。

413: if (open(UU,"$UUENCODE $tmp$filenum $filename |")) {
414:
415: @UUFILE = <UU>;

868 : :02/10/10 15:02 ID:???
ケース倍ケースですよ。その処理をする10行というのがファイルを舐めまわさないと
見つからない、とかいうケースだと違いは大幅に出ますが、先頭10行出力、程度だと
ほとんど変わらないでしょうね。


869 :848:02/10/10 15:05 ID:???
鯖OSは、Linuxです。
で、>861さんのをやってみたんですが、
ちゃんと表示されてました。
ってことは、uuencodeなんですよね?ヴァージョンでしょうか?
でも、レンタル鯖にお願いすることもできないですし・・・
このまま、tmpのんをコメントアウトしといて、
自分でダウンしに行くっていう手をとるしかないかなぁ・・・
何はともあれ、理由が解ってホッとしました。
有難う御座いますた!
あ、もし「こうしたら?」みたいなのがあれば、
書き込んでくれると、嬉しいです。

870 :nobodyさん:02/10/10 15:06 ID:???
plファイルの最後の、

1;

__END__

これなんですか。

871 :864:02/10/10 15:11 ID:???
>>868
やはり変わらないんですね。
ありがとうございました。

872 :nobodyさん:02/10/10 15:15 ID:???
>>870
1; がない場合、処理の結果に偽がある場合エラーになるます。

873 :nobodyさん:02/10/10 16:11 ID:???
ちょっと勉強不足なんですけど、
use Socket;   は大抵のサーバーで使えるんですよね?
use IO::Socket; これは使える確立が低いんですよね?

874 :nobodyさん:02/10/10 16:16 ID:???
そんなことは言い切れない。

875 : :02/10/10 16:18 ID:???
>>873
Socket はperl5の標準モジュールですが、 IO::Socketは別途インストールする必要が
ありますから、使える可能性は低いですね。


876 :nobodyさん:02/10/10 17:36 ID:???
負荷が掛からないよう制限してあるかも。

877 : ◆hMJAPH9PWA :02/10/10 20:00 ID:???
>>875
IO::Socketも標準だけど…(少なくとも5.005の時点では)
しかもIO::SocketはSocketのラッパーに過ぎないので、
Socketが使えてIO::Socketが使えないという状況は考えにくいよ。

878 :873:02/10/10 20:35 ID:???
参考になりました。

879 :nobodyさん:02/10/11 00:19 ID:???
>>877
言ってる意味が分からん

880 :nobodyさん:02/10/11 13:44 ID:???
$*** という普通の変数を正規表現で見つける場合は、
「\$\w+」この書き方であってますか?
でもこれだと $abc123 とかいう変数は123に反応しないんで間違ってるみたいなんですが。

881 :nobodyさん:02/10/11 13:53 ID:???
/\$(?:\w+|\{\w+\})/

882 :nobodyさん:02/10/11 13:56 ID:ZUcC5F8u
/\$(^w^)/

883 :nobodyさん:02/10/11 15:08 ID:3YhC7jcn
Perlを使って、受信したメールの解析をしようとおもってます。

まずは、ヘッダの取得とボディの取得。たとえば、

Recieved: ヘッダは複数行にわたることがありますし、同じヘッダ名で複数
存在することがあるので、これは複数行を一つにまとめ、配列にいれる。

](例)

Received: 1
2
3
Received: a
b
c

だったら、以下のように格納したいです

$header{Received][0] = "1 2 3";
$header{Received][1] = "a b c";


884 :nobodyさん:02/10/11 15:10 ID:3YhC7jcn
(続き)

本文は @0body に格納したいです。

以上を、まずやって、各行の内容をチェックして・・・・。

とおもっているのですが、いまだ超初心者のため、全然
うまくいきません

どなたかおしえていただけませんか?

885 :nobodyさん:02/10/11 15:55 ID:CDmI7Jp8
if (/$name/){
print;
}

変数$nameにマッチするかどうかチェックするには
こんな書き方でいいんですか?正規表現でも$が使わ
れてるからよくないとは思うのですが。

うまくいったりいかなかったりするので、こういう
場合の正しい書き方教えてください。

886 :nobodyさん:02/10/11 16:10 ID:dKGHWOFu
みんな、あやに愛にきてね!

http://www.geocities.co.jp/Milkyway-Aquarius/4378/
北朝鮮の彼氏を持つ女の子のHP

887 : :02/10/11 16:42 ID:???
>>884
具体的に何を教えて欲しいのかはっきりしてくれませんか?
Perl超初心者でも人間の初心者、日本語の初心者でなかったら、
何をやろうとして、こういうことをしたんだけど、こういう結果がでて
ほしいのに実行結果はこうなりました、くらい書けないのか。



888 :nobodyさん:02/10/11 20:15 ID:5ek4fUJV
まったくの初心者です。
入門本に載っているいちばん単純なソースをエディタで打ち込んで
ブラウザからアクセスすると、500 Internal Server Errorとなります。
どこが悪いのでしょう?

#!/usr/bin/perl

use CGI qw(:satndard);
print header;
print start_html('Hello');
print h1('This is hello.cgi');
print end_html;

889 :nobodyさん:02/10/11 20:51 ID:???
httpd のエラーログでも見なさい。

890 :nobodyさん:02/10/11 20:53 ID:???
>>888
まずCGIの問題とPerlの問題に切り分けてください。

まずCGIがきちんとお約束どおりになっているかどうか
確認してください。プロバイダによっては、
#!/usr/bin/perl なのか #!/usr/local/bin/perl かに分かれますし、
ファイルのパーミッションもプロバイダから指定された通りになって
いるのかどうかを調べてください。

CGIだとエラーメッセージはwebサーバのログに
でますから、もしも自分でサーバを立てているとかで
サーバのログが見れるのでしたら、そこを見てください。

それが無理なら、

use CGI qw(:satndard);
use CGI::Carp qw(fatalsToBrowser);

という風にCGI::Carpをつけるとエラーメッセージがブラウザに
出ますので、とりあえずそれを見てください。



891 :nobodyさん:02/10/12 01:31 ID:???
単純な質問で申し訳ありませんが,アクセスカウンタのログファイルが
消えることがあるのはなぜですか?

自作でアクセスログ取得機能付きのカウンタをつけてみたのですが,
3日に一度はカウンタ数などを記録するファイルが消えてしまいます.

消えないように気をつけるための注意点などあれば教えてください.

892 :nobodyさん:02/10/12 01:32 ID:???
>>891
ソース見ないとなんとも。。。

893 :nobodyさん:02/10/12 01:42 ID:???
こちらにアップしておきました.
http://www.makoto.ath.cx/~uploader/source/up0143.txt

894 :892:02/10/12 01:51 ID:???
>flock(IN, 2);
のように、読み込みなのに書き込み用ロックを実行している。

>open(OUT, "> $logfile");
のように、いきなりファイルを空にしている。

895 :nobodyさん:02/10/12 01:58 ID:???
ありがとうございます.
では,ひとつめはflock(IN,1)にすれば良いだと思います.
でも,ふたつめはどのように解決したらいいんでしょうか…

896 :892:02/10/12 02:02 ID:???
open(OUT, "+<$logfile");
flock(OUT, 2);
truncate(OUT, 0);
seek(OUT, 0, 0);
print OUT "hogehoge\n";
close(OUT);

みたいな感じかな・・・

897 :nobodyさん:02/10/12 02:07 ID:???
なるほど.truncateなんて初耳です..
早速そういうふうにしてみます.
それでもダメでしたらまた来ますのでよろしくお願いします.

898 :nobodyさん:02/10/12 02:13 ID:???
あと,関係無いと思いますが,hogehogeとはどういう意味があるのでしょうか.

899 :892:02/10/12 02:15 ID:???
hoge, bar, foo などは適当なデータに置きかえるという意味で書きます。

900 :nobodyさん:02/10/12 02:23 ID:???
そうでしたか...理解しました.ホゲと言うんですか?

901 :nobodyさん:02/10/12 02:30 ID:???
RFCにもあるから(w
http://www.puni.net/~mimori/rfc/rfc3092.txt

902 :nobodyさん:02/10/12 02:35 ID:???
>>901
どうも.fooとbarはわかりましたが,hogehogeはホゲホゲなんですか?
なんか変ですね.かくかくしかじかみたいな感じか.

903 :nobodyさん:02/10/12 02:38 ID:???
>>902

http://pc.2ch.net/test/read.cgi/php/1012141548/l50

904 :nobodyさん:02/10/12 02:41 ID:???
どうもありがとうございました.行ってきます.

905 :nobodyさん:02/10/12 13:13 ID:kfRJ7swR
すいません。アクセスログを取りたいのですが
#! c:/perl/bin/perl

$LOGPATH = './log/'; #ログ保存ディレクトリ
$EXPIRES = 3; #アクセスログ保存期間

# 日付の取得
$tm = time;
($sec, $min, $hour, $mday, $mon, $year,) = localtime $tm;
$year += 1900;
++$mon;

# アクセス情報の整形
$in = "$hour\t$min\t$ENV{'REMOTE_HOST'}\t"
. "$ENV{'HTTP_REFERER'}\t$ENV{'HTTP_USER_AGENT'}\n";

# ログファイルへの書き込み
open(FILE, ">>$LOGPATH$year$mon$mday.dat") or die("ERROR: open log-file.");
eval{ flock(FILE, 2) };
seek(FILE, 0, 2);
print FILE $ln;
close FILE;

# 古いログファイルの削除
$tm -= $EXPIRES * 60 * 60 * 24;
($sec, $min, $hour, $mdoy, $mon, $year) = localtime $tm;
$year += 1900;
++$mon;
$delfile = "LOGPATH$year$mon$mday.dat";
if(-e $delfile) {
unlink $delfile;
}

906 :905:02/10/12 13:14 ID:kfRJ7swR
↑だとサーバーエラーになってしまいます
どこがおかしいのでしょうか?
エラーログは
[Sat Oct 12 13:06:54 2002] [error] [client 127.0.0.1] Premature end of script headers: c:/apache/htdocs/tendays/4-2.cgi
です。

907 :nobodyさん:02/10/12 13:19 ID:???
どこもおかしくないよ。

908 :905:02/10/12 13:25 ID:kfRJ7swR
>>907
えっ!?
それではこのエラーは何が原因ですか?

909 :nobodyさん:02/10/12 13:41 ID:???
>>905
まず、こんなの効かないっしょ。
>#! c:/perl/bin/perl
あとここね。2行に分かれてるけど行末に転送時に\rが入っちゃってんじゃ
ねえの。
># アクセス情報の整形
>$in = "$hour\t$min\t$ENV{'REMOTE_HOST'}\t"
>. "$ENV{'HTTP_REFERER'}\t$ENV{'HTTP_USER_AGENT'}\n";



910 :nobodyさん:02/10/12 13:42 ID:???
#! c:/perl/bin/perl ?
Win?
出力はないんですね?

911 :nobodyさん:02/10/12 13:47 ID:???
>>905
>print FILE $ln;

>$in= xxxxxx
の変数名の違い

912 :911:02/10/12 13:53 ID:???
おっとわすれてた、エラーが出るんですよね

ログ内容からして、ヘッダが出力されていないよーって言ってます。

913 :905:02/10/12 13:59 ID:kfRJ7swR
みなさんありがとうございます
しかし・・・・
ヘッダ出力させるにはどうすれば・・・

914 :nobodyさん:02/10/12 14:25 ID:???
print qq(Content-type: text/html\n\n);

915 :nobodyさん:02/10/12 14:52 ID:???
文字コード的に
引数の文字列が日本語か英語かの判断ってどうやるのですか?

「参考」
http://bulknews.net/lib/utils/eijiro/

916 :915:02/10/12 14:54 ID:???
http://bulknews.net/lib/columns/02_eijiro/column.html
のほうがいいかも

917 :nobodyさん:02/10/12 16:47 ID:???
% cat aaa
aaa bbb ccc
ddd fff ggg

% foreach i (`cat aaa`);echo $i;end
aaa
bbb
ccc
ddd
fff
ggg

%
とバラバラにしてperlの@lines=<>;でそれを
aaa bbb
ccc ddd
fff ggg
のように変形してSTOUTに出したいのですが……
書き方が判りません。
助けてくださいませ。


918 :nobodyさん:02/10/12 17:00 ID:???
foreach i (`cat aaa`);echo $i;end|perl -e '@a=<>;for $i (1..3){print shift @a unless $i!=1;}'


919 :%d%d%d%d%d%d%d%d%d:02/10/12 18:25 ID:???
% cat aaabbbbbbbbb
36007 36045 36103 36115 36118 36136 36142

% perl -ane 'printf("(%d|%d|%d|%d|%d|%d|%d)\n",@F)' aaabbbbbbbbb
(36007|36045|36103|36115|36118|36136|36142)

といつもやってますが、%dを何度も書きたくないので、省略して書きたいです。


920 :nobodyさん:02/10/12 18:45 ID:???
perl -ane 'printf("(" . join("|", ("%d") x 7) . ")\n",@F)' aaabbbbbbbbb

921 :nobodyさん:02/10/12 18:58 ID:???
>>920
( ´,_ゝ`) プッ 冗長になってる

922 :nobodyさん:02/10/12 20:53 ID:???
>>896
こっちにしとこ
open(OUT, "+< $datafile");
flock(OUT, 2);
seek(OUT, 0, 0);
print OUT "$data\n";
truncate(OUT, tell(OUT));
close(OUT);

http://homepage1.nifty.com/glass/tom_neko/web/web_04.html#output

923 :nobodyさん:02/10/12 23:16 ID:???
http://noronoro.com/tech/appleScript.html

『活動中のエクセルシートから1行抜き出す』
という記述があるが
AppleScript 使えば、
起動しているEXCELからデータ取れるのかな?

924 :nobodyさん:02/10/13 01:15 ID:yxI3IEPS
CGIの改造をしようと思うのですが、

if($ent_rate_extra && $line[12] < $ent_rate_border){ push(@line_temp, "$_\n"); next; }

この行の前に、
$ent_rate_border = 10;
を追加するとエラーが出ます。

javaをちょっとやった初心者ですが、
数値を代入しちゃ不味いですか。

925 :hmk:02/10/13 01:23 ID:???
>>924
エラーメッセージは読んだのかね?

926 :nobodyさん:02/10/13 01:31 ID:???
>>924
$ent_rate_border = 10;
を書き足すと、if文内が実行されるからエラーが出る。

next; は不要だから削除するとエラーは出なくなるよ。

927 :924:02/10/13 01:41 ID:???
>>925
レスサンクス。
サーバで直接実行しているので、具体的なメッセージはわかりません。
あーん、怒らないでね。

>>926
if文内が実行されるのですね。
やっぱり、しったかじゃ改造は無理みたいですね。
基本から勉強し直します。

928 :924:02/10/13 01:47 ID:???
やりたかったのは、現状
$line[12] < 50
で区分されるのを、10で区分したかったんです。

>if文内が実行
きっと今は、htmlから読み出された時に実行されるのですね。

929 :924:02/10/13 04:16 ID:???
あれから、いろいろやってみましたが、結局
if($ent_rate_extra && $line[12] < 10){ push(@line_temp, "$_\n"); next; }
で、意図する物ができました。
お騒がせしました。

930 :nobodyさん:02/10/13 17:54 ID:???
6桁以上の昇順整数表が作りたいです。

1(改行)
2
3

ローカルでfor($i=0;$i<100000;$i++)で配列作成と一回毎にファイルへの書き込む二通りをやってみたのですが、7000個(行)程度で新規ファイルを自動的に作成し、その後その新規ファイルを7000毎に更新して結局1〜7000、93000〜100000
の二つのファイルしかできませんでした。
次にfor文をネストして7000×15のファイルを作ろうと思い組んでみたのですが、ファイル名に変数が使えないため実現できませんでした。

6桁以上の連番ファイルを作成するにはどうしたらいいのでしょうか?
ファイル名に上手く変数を使う方法や別の方法がありましたら教えてください。

言語はscriptとJavaなどを少しかじった程度です。

931 :nobodyさん:02/10/13 18:01 ID:???
6桁以上って言っておきながら、いきなり例として1桁だが???

なにをしたいのかなにを聞きたいのかさっぱりわからん。説明する能力って大事ね。

932 :bloom:02/10/13 18:02 ID:7jsv3n6x

http://homepage.mac.com/leverage/

933 :930:02/10/13 18:07 ID:???
>>931
すいません。
1〜100000までの整数を一覧にするコードの書き方を教えてください。

934 :nobodyさん:02/10/13 18:16 ID:???
for ( 1 .. 100000 ){
print $_,"\n";
}

935 :930:02/10/13 18:23 ID:???
スレを汚してすいませんでした。もう結構です。

936 :830:02/10/13 19:03 ID:???


レスしてくださった方すみませんでした。

そもそもこのテストの意味から勉強しようと思います。

例えば、 /usr/bin/make -- OK
Running make test
PERL_DL_NONLAZY=1 /usr/bin/perl -Iblib/arch -Iblib/lib -I/usr/lib/perl5/5.6.0/i386-linux -I/usr/lib/perl5/5.6.0 -e 'use Test::Harness qw(&runtests $verbose); $verbose=0; runtests @ARGV;' t/*.t
のように
makeが成功すると
t/f000....ok
t/f001....ok
t/f002....ok
のようにテストが始まりますが、
t/f** のはすべてOKですが
t/m004....ok
t/m005....FAILED test 5
Failed 1/30 tests, 96.67% okay
t/m006....ok
のように t/m005でエラーが出ます。
エラー表示はFailed Test Stat Wstat Total Fail Failed List of Failed
-------------------------------------------------------------------------------
t/m005.t 30 1 3.33% 5
Failed 1/48 test scripts, 97.92% okay. 1/2710 subtests failed, 99.96% okay.
make: *** [test_dynamic] エラー 11
/usr/bin/make test -- NOT OK
といった感じです。




937 :830:02/10/13 19:05 ID:???
あ、上はDate::Calcをインストールした時のです。

938 :830:02/10/13 19:26 ID:???
~/.cpan/build/Date-Calc-5.3にて
perl -d -Iblib/arch -Iblib/lib t/m005.t
を実行しました。何かわかることあるでしょうか。
ok 4
main::(t/m005.t:42): $n++;
DB<1>
main::(t/m005.t:44): Date::Calc->date_format(2);
DB<1>
main::(t/m005.t:45): Date::Calc->language(11);
DB<1>
main::(t/m005.t:48): local($date->[0][2]) = undef;
DB<1>
main::(t/m005.t:48): local($date->[0][2]) = undef;
DB<1>
main::(t/m005.t:49): if ("$date" eq '4 1-ago-2001')
DB<1>
main::(t/m005.t:50): {print "ok $n\n";} else {print "not ok $n\n";}
DB<1>
not ok 5


939 :nobodyさん:02/10/13 20:04 ID:sWhCrFb+
URLエンコーディングする正規表現を超特急で教えてたも!

940 :nobodyさん:02/10/13 20:06 ID:???
      ,一-、
     / ̄ l |   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
    ■■-っ < 呼んだ?
    ´∀`/    \__________
   __/|Y/\.
 Ё|__ | /  |
     | У..  |

941 :nobodyさん:02/10/13 20:09 ID:sWhCrFb+
タモさんちゃうって!
でもタモさんでもいい!おしえてっ迅速に!

942 :nobodyさん:02/10/13 20:17 ID:???
>>939
sub urlenc {
my($x) = @_;
$x =~ s/([\W])/sprintf("%%%02X",unpack("C",$1))/ge;
return $x;
}

かえ?

943 :nobodyさん:02/10/13 20:26 ID:???
>>942
あっ、ありがとーございますっ!
( ・∀・)ノI ホウビジャ

944 :nobodyさん:02/10/13 21:56 ID:???
@log=<LOG>; よりも、whileで1行ずつ書きこむ方がベストなんですか?

945 :nobodyさん:02/10/13 21:59 ID:???
>>944 書きこむ?読み込む?

946 :nobodyさん:02/10/13 22:01 ID:???
>>944
ベスト?ベターじゃない?
それ、お大尽スクリプトって言ってた人いたな。
メモリが許しゃ同じことだろうけど、あとの処理は、
かえって面倒じゃん。for(@log)でループでしょ。


947 :nobodyさん:02/10/13 22:03 ID:???
む、書き込みって書いてあるね。じゃ、>>946撤回。
それで書き込みは、私にゃ分からんチン。


948 :nobodyさん:02/10/13 22:04 ID:???
赤ラクダより

「7.4.2 空間の効率を上げるためのヒント」
・配列操作やファイル全体を読み込むことを避ける。

「7.4.3 プログラマの効率を上げるためのヒント」
・配列全体をいじったり、ファイル全体を一気に読み込んだりする。

949 :944:02/10/13 22:14 ID:???
ファイルを読みこんで配列に格納する、という意味でつ。
$#log=298;
とかやるだけでログ行数が制御できるので配列を使おうと思ったんですが
どかっと @log=<LOG>; とかやっちゃまずいのかなと。
それともどのみち全部配列に入れるなら同じなのかなと。

950 :nobodyさん:02/10/13 23:02 ID:???
>>949
100Kgの重りを10回上げるか、10kgのを100回上げるかの違いだ。

951 :944:02/10/13 23:26 ID:???
>>950
やぱりメモリ的には変わらないわけすね。

281 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)