X



bbs.cgi再開発プロジェクト5

■ このスレッドは過去ログ倉庫に格納されています
04/12/20 07:38:07ID:KYFJjC4V
peko鯖の稼動によりボトルネックの一つである事がより明らかになった
bbs.cgi作り直しプロジェクトです。

【開発環境の工事現場】
また挑戦。@2ch掲示板  http://dso.2ch.net/myanmar/
また挑戦2。@2ch掲示板 http://dso.2ch.net/yangon/

関連スレなどは >>2-5 くらい
04/12/29 23:18:15ID:/lQhyvTX
>335
うほ、いきなり実験ですか(汗
トラブルあった場合人なだれ込んでくるからすぐにわかるでしょうけどw
04/12/29 23:22:48ID:GPE5aLXX
おつかれおつかれ。
だいじょぶっしょ。
338FOX ★
垢版 |
04/12/29 23:26:31ID:???
>>326-327
なんだが BBS でカウントできていないサーバがあるようなんだが、、
http://ch2.ath.cx/load/ex9.html
339ひろゆき@どうやら管理人 ★
垢版 |
04/12/29 23:27:27ID:???
SpeedyCGIって、ソケットを使ったりしても大丈夫なんすかね?
340FOX ★
垢版 |
04/12/29 23:29:00ID:???
>>339
たぶん問題ないかと、
04/12/29 23:29:37ID:Ow0vACsz
昨日、スレ立てしようとして何も入力していないのに
いきなり確認画面に行ったのはテスト?の影響ですか?

342FOX ★
垢版 |
04/12/29 23:31:06ID:???
>>338 はBBS/BBY側の設定かしらん?
お前の要求なんぞ受け付けておらんとか、
04/12/29 23:34:50ID:GPE5aLXX
2chの動作報告はここで。 パート16
http://qb5.2ch.net/test/read.cgi/operate/1103455176/114
これと同じで、

BBS_TITLE_LINK

http://www.2ch.net/info.html
だったら
http://info.2ch.net/guide/
に変えてくれないかな。
info.htmlは廃棄されてるので。
板作成時のテンプレも変えてくれるとうれしい。
04/12/29 23:35:24ID:GPE5aLXX
>341
ただのCookie確認だべ。
関係無し。
345FOX ★
垢版 |
04/12/29 23:38:30ID:???
>>343
やってみた
04/12/29 23:42:28ID:GPE5aLXX
>345
わーい、ありがとー。
347FOX ★
垢版 |
04/12/29 23:43:28ID:???
ちなみに =~ /info\.html/ で引っ掛けています
348ひろゆき@どうやら管理人 ★
垢版 |
04/12/29 23:45:37ID:???
>>340
( ̄ー ̄)ニヤリッ
349FOX ★
垢版 |
04/12/29 23:54:08ID:???
うわっ
04/12/29 23:58:00ID:kM7ZnDFz
あーあ(w
351root▲ ★
垢版 |
04/12/29 23:58:31ID:???
うーむ、、、。

>>338 >>342
今ちょっと取り込み中なので、あとでみてみます。
352FOX ★
垢版 |
04/12/30 00:02:56ID:???
>>348
ちなみに何するですか?
どっかから何か読み込んでくる?

入れたら見てみるけど、
そして負荷高かったら直せばいいのか、ブツブツブツブツ
353root▲ ★
垢版 |
04/12/30 00:04:00ID:???
>>348
何しようとしてるんだろう。広告関係かしら、、、。
重い処理が入っちゃうようなら、おじさんが直すんだろうなぁ、やっぱ。ウウム
354FOX ★
垢版 |
04/12/30 00:04:09ID:???
>>333>>343 も特に問題はないようだ、
04/12/30 00:12:07ID:+U2vszG5
Socketを使うとまたタイムアウト問題が出てくるかもしれませんね( ̄ー ̄)ニヤリッ
356FOX ★
垢版 |
04/12/30 00:17:28ID:???
>>335
Socket を使うときはどんなクラス(←Perlでもこの言い方でいいの?)を使うんですか?
Net::Socket とかなんとか便利なものがあるんですか?
Net::Http とか? (←勝手に想像しています)
357ひろゆき@どうやら管理人 ★
垢版 |
04/12/30 00:22:23ID:???
beに登録してるユーザーの場合は、beのDBに見に行くようにしてみようかと。
358ひろゆき@どうやら管理人 ★
垢版 |
04/12/30 00:23:03ID:???
>>356
use socket;
だけで、あとはこそこそと。
359FOX ★
垢版 |
04/12/30 00:27:23ID:???
投稿毎にやるですか、、、
360root▲ ★
垢版 |
04/12/30 00:27:37ID:???
>>325
単純な暴走が起こります。
そのプロセス(perl subbbs.cgi)が、プロセスを100%使ってしまう。
で、120秒分CPUを使うと、むなしく終了していく。

スレ立ての時に直接subbbs.cgiをコールする2ちゃんねるビューワもあるような
気がちょっとしたけど、どうでしたっけ。

>>326
そのコードでたぶん問題ないと思います。
私も、>>329 の変化に注目したい。

>>357
beのDBが落ちていた場合に、どうなるのかしら。
待っちゃう?
361root▲ ★
垢版 |
04/12/30 00:29:41ID:???
全投稿に対してやるとすると、相当気合入れないと大変すよ。サーバ側。
FreeBSD素の設定(各種カーネルチューンしてない状態)では、
ほとんどむりぽなような。

確か今160万投稿とか170万投稿とかあるので、
そのつもりでサーバ側をまじめに強化しないと、かなりきびしいです。
362FOX ★
垢版 |
04/12/30 00:29:47ID:???
>>360
subbbs.cgi をバックアップして
今は使われていませんとしてみよう。
363root▲ ★
垢版 |
04/12/30 00:35:14ID:???
そうか、BBSとBBYのDBに、2ちゃんねるのサーバ全部を登録するようにしなきゃ。
やってきます。
364FOX ★
垢版 |
04/12/30 00:41:51ID:???
うっ 上書きしつまった、
subbbs.cgi は何処か遠くへ・・・

でもどっかのサーバに残っているだろう、きっと。
04/12/30 00:48:48ID:mjkYzHbf
Have a nice surf !!

Top
366root▲ ★
垢版 |
04/12/30 00:48:55ID:???
2ちゃんねるの全bananaサーバからの登録を受け付けるようにした。
カウントアップ復活を確認。

http://stats.2ch.net/suzume.cgi
367root▲ ★
垢版 |
04/12/30 00:49:28ID:???
>>364
368未承諾酩酊※ ◆TWARamEjuA
垢版 |
04/12/30 00:49:38ID:+U2vszG5
>>364
>>364
>>364
>>364
>>364
04/12/30 00:51:11ID:QWSoREWe
あわわわ
とりあえず、ミャンマー当たりで連投スレ建てしまくって不具合無いか調べた
ほうがいい鴨
370未承諾酩酊※ ◆TWARamEjuA
垢版 |
04/12/30 00:52:09ID:+U2vszG5
>>356
ごくごく簡単にURLから何かを拾ってきたいのならばLWP::UserAgentなんてモジュールがあるですよ。
http://search.cpan.org/~gaas/libwww-perl-5.803/lib/LWP/UserAgent.pm
371FOX ★
垢版 |
04/12/30 01:16:05ID:???
bubble2サーバから回収してきた < subbbs.cgi
subbbs-save.cgi で qb6に入れた。
372FOX ★
垢版 |
04/12/30 01:17:55ID:???
>>370
あっ それ知ってる、
boo80 はそれでやったような、
373FOX ★
垢版 |
04/12/30 01:24:37ID:???
$ua = LWP::UserAgent->new() でUA作って
HTTP::Headers->new()
HTTP::Request->new() なんてのを作って
UA にheadrer と Request くべて
$res = $ua->request() すねーるんですよね?

$ua->timeout(15) とか設定して

タイムアウト時は$response->code() あたりを見ればいいのかしら?

374FOX ★
垢版 |
04/12/30 01:30:04ID:???
しかし本筋は
●の時にやったように期限付きのセッションID方式と思われ < be のDB look up
375root▲ ★
垢版 |
04/12/30 01:33:21ID:???
DBが何でできているかわかりませんが、
前にDBIがどうのとかどっかで言っていたような気がするので、
MySQLか何かのサーバと、プロセス間通信しようとしているのかも。
376ひろゆき@どうやら管理人 ★
垢版 |
04/12/30 02:23:43ID:???
>>359
beにログインしてるユーザーの場合だけです。
377未承諾酩酊※ ◆TWARamEjuA
垢版 |
04/12/30 02:32:45ID:+U2vszG5
>>373
そんな感じですー

→タイムアウト時は$response->code() あたりを見ればいいのかしら?
例文の通り、
 $response->status_line;
とすると詳しい情報が得られるようです。('time out' の文字列が含まれています。)
378ひろゆき@どうやら管理人 ★
垢版 |
04/12/30 02:41:02ID:???
$ip = inet_aton($be_host) || print "host($be_host) not found.\n";

$sockaddr = pack_sockaddr_in($port, $ip);
socket(SOCKET, PF_INET, SOCK_STREAM, 0) || print "socket error\n";

connect(SOCKET, $sockaddr) || die "connect $be_host error\n";
autoflush SOCKET (1);

print SOCKET "GET $url HTTP/1.1\n";
print SOCKET "Host: $host\n";
print SOCKET "Connection: close\n\n";
379未承諾酩酊※ ◆TWARamEjuA
垢版 |
04/12/30 02:41:05ID:+U2vszG5
>>377
ちなみに、
$response->status_line のとき。
 500 Can't connect to count.2ch.net:80 (connect: timeout) at ./test.pl line 12.

$response->code() のとき。
 500 at ./te.pl line 12.

となるですー
380ひろゆき@どうやら管理人 ★
垢版 |
04/12/30 02:42:08ID:???
モジュールのほうが重そうな気がしたので、
書いたほうが早いと思ったんですが、どうなんでしょう?
04/12/30 02:43:20ID:PtWy/RYB
外部からbeのデータが覗かれちゃう危険は無いのかしらん、
382FOX ★
垢版 |
04/12/30 02:44:34ID:???
モジュール(って言うんですか?)と同じに書けば同スピード
遅くなるように書けば遅いし
より早いコードを書けば早いかと、

ちなみにコンパイルされるんで
ロードの負荷やコンパイルの負荷は限りなく0です。
383ひろゆき@どうやら管理人 ★
垢版 |
04/12/30 02:45:12ID:???
>>381
DBIだとselect文とかいじれちゃうので、
http経由のほうがいいかなぁと思ったのです。
384ひろゆき@どうやら管理人 ★
垢版 |
04/12/30 02:46:14ID:???
>>378みたいに7行で終わるので、
モジュールよりは、早いんじゃないかなぁ、、と。
385FOX ★
垢版 |
04/12/30 02:46:53ID:???
サーバの場所に実は一番左右されたり < コードの優劣より
386未承諾酩酊※ ◆TWARamEjuA
垢版 |
04/12/30 02:47:25ID:+U2vszG5
>>378
timeout処理がないので、count.2ch.net みたいになると永遠に戻らなくなるですよー(汗)
でもってalarm()を使うと、SpeedyCGIではへんてこりんになるんだっけ?

>>380
リクエストされる数にもよるけれども、10分に1回くらいのリクエストならLWP::UserAgent使う方が楽かもですー
(このあたりはTimeoutをどれくらい取るかに左右されるかと思いますー)
387root▲ ★
垢版 |
04/12/30 02:49:28ID:???
TCPセッション張るですか。
connect() で詰まったら(サーバが落ちてたとかで)、どうするんだろう。
388root▲ ★
垢版 |
04/12/30 02:51:13ID:???
>>386
alerm() はSpeedyCGIでは使えませんです。
モジュール使って、タイムアウト指定しとかないとひどいことになるような。

LWP::UserAgent とかを使って、タイムアウトを入れたほうがよさげ。
389FOX ★
垢版 |
04/12/30 02:52:27ID:???
正常にGETが終了する場合
 >>378 でも >>373 でも
  PIE 内であれば BD の処理を除けば 10ms 以下で終ると予想
  PIE 外(たとえば日本) 200ms かかるかも?

異常な場合(timeout.busy等)
>>378 timeout 処理ないと bbs.cgi が待ち続け他の人がかけなくなる (-M32)
>>373 timeout 処理をたんたんと、

ってとこかな?
390未承諾酩酊※ ◆TWARamEjuA
垢版 |
04/12/30 02:53:26ID:+U2vszG5
>>388
LWPなどはIO:SelectでTimeout処理しているのでSpeedyCGIでもへんてこりんにならないようなのですー
391FOX ★
垢版 |
04/12/30 02:55:01ID:???
あと、、
>>378 の場合はわからないけど
>>373 でやると簡単に HTTPS が使えたり、Proxy経由で参照できたりと
のちのち簡単です
392root▲ ★
垢版 |
04/12/30 02:55:39ID:???
>>389
概ね、そんなかんじかと。

PIE <=. Sakuraは120msぐらいかかるみたいなので、250msぐらいはかかるですね。

%ping be.2ch.net
PING be.2ch.net (202.222.31.214): 56 data bytes
64 bytes from 202.222.31.214: icmp_seq=0 ttl=47 time=119.828 ms
64 bytes from 202.222.31.214: icmp_seq=1 ttl=47 time=123.794 ms
64 bytes from 202.222.31.214: icmp_seq=2 ttl=47 time=120.057 ms
64 bytes from 202.222.31.214: icmp_seq=3 ttl=47 time=122.132 ms
64 bytes from 202.222.31.214: icmp_seq=4 ttl=47 time=120.747 ms
^C
--- be.2ch.net ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max/stddev = 119.828/121.312/123.794/1.478 ms
393未承諾酩酊※ ◆TWARamEjuA
垢版 |
04/12/30 02:56:05ID:+U2vszG5
>>389
おそらくビンゴー♪
>>391
ですです(嬉)
394root▲ ★
垢版 |
04/12/30 02:56:37ID:???
>>390
…ですね。

ふろ入ってくるです。東京、さむさむ。
395FOX ★
垢版 |
04/12/30 02:57:29ID:???
こっちは最高気温が-5℃とかだったり
雪祭りシーズン並
396root▲ ★
垢版 |
04/12/30 02:57:48ID:???
>>392
あ、RTTだから単純に倍するのはへんだ、、、。
04/12/30 02:59:53ID:tK0pClhz
connect()失敗した後にファイルディスクリプタ解放してないのか・・・
まぁひとごとだし、いいけど。
398root▲ ★
垢版 |
04/12/30 03:01:28ID:???
>>397
うむ。
SpeedyCGIだと、こういうのも響いてくる予感。

つまり、どなたかのいう「静脈系」をちゃんとできるひとじゃないと、
いじった場合、よりいっそういけないことになると。

ふろー。
399ひろゆき@どうやら管理人 ★
垢版 |
04/12/30 03:02:25ID:???
素直にLWPつかいますかー。
04/12/30 03:03:00ID:fcdZGLxI
yamete
04/12/30 03:03:49ID:???
サンプルもって来る出巣
402FOX ★
垢版 |
04/12/30 03:08:32ID:???
use LWP::UserAgent;
use HTTP::Request;
use HTTP::Status;

my $ua = LWP::UserAgent->new();
$ua->agent ("Iyan Bakan ver 1.00");
$ua->from ("security\@2ch.net");
$ua->proxy("http", "http://$proxy/") ;#proxyさすなら
$ua->timeout(15);
$header = HTTP::Headers->new(
'Referer' => "http://www.2ch.net/",
);
my $parameter= "abc=123&def=456";
my $request = HTTP::Request->new("POST", "http://be.2ch.net/nantara.cgi", $header, $parameter);
my $response = $ua->request($request) ;#ここで GET 処理
#ここでtimeout処理
my $response_code = $response->code();#302とか404とか500
my $response_body = $response->content();#GETの結果はここに入っている
403FOX ★
垢版 |
04/12/30 03:11:09ID:???
たぶん 7行より短くなるはず、
404ひろゆき@どうやら管理人 ★
垢版 |
04/12/30 03:15:49ID:???
試してみようと、LWPをCPANから拾おうとしたら、
ftp.perl.orgが落ちてる。。
405未承諾酩酊※ ◆TWARamEjuA
垢版 |
04/12/30 03:26:29ID:+U2vszG5
>>402
use をLWP::UserAgentだけにしてみるトステ

use LWP::UserAgent;
my $ua = LWP::UserAgent->new(
 'agent' => "Iyan Bakan ver 1.00",
 'from' => "security\@2ch.net",
 'timeout' => 15,
);
# $ua->proxy('http', "http://$proxy/") ;#proxyさすなら

$ua->default_header(
 'Referer' => 'http://www.2ch.net/',
);

my $response = $ua->post(
 "http://be.2ch.net/nantara.cgi",
 \{
  'abc' => 123,
  'def' => 456,
 }
);

$response = $response->is_success
 ? $response->content # 成功した時は内容を取り込む
 : $response->status_line # 失敗した時はそのレスポンスとエラー内容を取り込む
;
406未承諾酩酊※ ◆TWARamEjuA
垢版 |
04/12/30 03:29:04ID:+U2vszG5
>>404
%perl -MCPAN -e shell
してから、
cpan> install LWP
すると、依存関係類もまとめてインストロールしてくれはるです♪
407(_ `
垢版 |
04/12/30 03:31:47ID:g+ta55qi
(Д ` ≡ ´ д) (。`?  ..。。(( ´ _)
04/12/30 03:38:32ID:tK0pClhz
Classまで使ってそんなにシビアなコード書きたいなら静脈系自動処理してくれるJava系の方が向いていそう。
その代償にGlobalGC時の硬直があるがJavaVMのParameterを経験則で調整していけばなんとかなる。
完全インタプリタなPerlよりバイトコードに落とすJavaの方が単純なルーチンなら刹那的な速度的にも最大二桁倍の速度向上が見込める。
SystemCallにおいては微妙ではあるが。でもやっぱり過去の資産の総リプレースは怖いのかな。

と言ってみるテスツ。
409ひろゆき@どうやら管理人 ★
垢版 |
04/12/30 03:42:23ID:???
怒られました。
***
Failed Test Stat Wstat Total Fail Failed List of Failed
-------------------------------------------------------------------------------
live/jigsaw-auth-b.t 3 2 66.67% 1 3
live/jigsaw-auth-d.t 1 1 100.00% 1
live/jigsaw-md5-get.t 2 2 100.00% 1-2
live/jigsaw-neg-get.t 1 1 100.00% 1
live/jigsaw-te.t 4 1 25.00% 4
Failed 5/41 test scripts, 87.80% okay. 7/788 subtests failed, 99.11% okay.
*** Error code 2

Stop in /root/.cpan/build/libwww-perl-5.803.
/usr/bin/make test -- NOT OK
Running make install
make test had returned bad status, won't install without force
04/12/30 03:43:01ID:+U2vszG5
>>404
あっと、どうしてもソースコードがご入り用でしたら、
http://search.cpan.org/~gaas/libwww-perl-5.803/
からダウソできるですよー

※あらやだ今日は呑んでいないのに酩酊のママだったorz...
411root▲ ★
垢版 |
04/12/30 03:43:56ID:???
>>404
LWP、2chの環境には入れてあったような。
あ、直轄サーバで試すのかな。

# FreeBSDならCPANから拾うより、pkg_add -r で入れるほうが楽です。
04/12/30 03:52:49ID:+U2vszG5
>>409
ぬー、、、jigsaw.w3.org が墜ちているもより(滂沱)@なのでtest出来ずに鰓。。。
rootさん曰く、
→# FreeBSDならCPANから拾うより、pkg_add -r で入れるほうが楽です。
かもですm(_ _)m
413root▲ ★
垢版 |
04/12/30 03:54:45ID:???
>>409
FreeBSDなら、これで一発かと。

pkg_add -r p5-libwww
414root▲ ★
垢版 |
04/12/30 03:56:26ID:???
libwwwはかなりの基本ライブラリなんで、さすがにbanana/tiger/cobra全部入っているです。
04/12/30 03:59:56ID:+U2vszG5
>>414
ちなみに MacOSX10.3.7 では LWP が入っていませんでしたorz...
そして live/jigsaw- で詰まりました(泪)

あ、でももしかすると、make test がデフォルトで入っているかもしれないので、
%pkg_add -r p5-libwww
でも鰓になるかも、、、
416root▲ ★
垢版 |
04/12/30 04:02:22ID:???
>>415
ううむ。

旧HE時代からlibwwwはpkg_addで入れてますが、
FreeBSD4.x/5.xでは、一度もエラーになったことないです。
417FOX ★
垢版 |
04/12/30 04:03:53ID:???
ちなみに質問ですが
Perl で Net:: とかLWP:: とかは通常なんて呼ぶんですか?
418root▲ ★
垢版 |
04/12/30 04:05:03ID:???
>>417
Perl modules って答えでいいのかな。
419FOX ★
垢版 |
04/12/30 04:06:00ID:???
Net モジュールとか LWP モジュールって感じ?

あとデストラクタまで入っているという認識でいいのかな?
04/12/30 04:09:22ID:+U2vszG5
>>417
大文字で始まる場合はモジュール、小文字の場合はプラグマ。って答えでいいのかな。
http://search.cpan.org/modlist/Pragmas
421ひろゆき@どうやら管理人 ★
垢版 |
04/12/30 04:10:50ID:???
portsでmakeしてみました。
422root▲ ★
垢版 |
04/12/30 04:12:04ID:???
>>419
Net::DNSで1つのモジュール、ってかんじですね。

モジュールの作者がそのへんに配慮して書いているかによると思います。<デストラクタ
423root▲ ★
垢版 |
04/12/30 04:12:49ID:???
>>421
/usr/portsはまさか、OS入れたときのそのまま、、、ってことはないですよね。
ちゃんとupdateしてます?
424ひろゆき@どうやら管理人 ★
垢版 |
04/12/30 04:14:27ID:???
portsってどうやってupdateするんすか?
425root▲ ★
垢版 |
04/12/30 04:18:27ID:???
>>424
ひゃー。

/etc/make.conf作って、/usr/portsでmake updateするです。
/etc/make.confの例をここに書くです。
04/12/30 04:20:40ID:+U2vszG5
>>424
http://www.freebsd.org/doc/ja_JP.eucJP/books/handbook/ports-using.html
このあたりとか(苦笑)
427root▲ ★
垢版 |
04/12/30 04:22:09ID:???
# -- use.perl generated deltas -- #
# Created: Tue Oct 12 12:12:01 2004
# Setting to use base perl from ports:
PERL_VER=5.8.5
PERL_VERSION=5.8.5
PERL_ARCH=mach
NOPERL=yo
NO_PERL=yo
NO_PERL_WRAPPER=yo

とかがたぶんデフォルトで(Perl入れていれば)入っていると思うので、
これにこんなかんじの↓を追加するです。
で、cd /usr/ports して、make update を実行。

SUP=/usr/local/bin/cvsup
SUP_UPDATE=yes
SUPHOST=cvsup2.jp.freebsd.org # fastest_cvsupを実行して適当に近いやつにする
SUPFILE=/usr/share/examples/cvsup/standard-supfile
SUPFLAGS=-g -L 2
PORTSSUPFILE=/usr/share/examples/cvsup/ports-supfile
# Thank you for http://qb.2ch.net/test/read.cgi/operate/1062137886/39
WITHOUT_X11=yes
WITH_APACHE2=yes
428root▲ ★
垢版 |
04/12/30 04:23:46ID:???
あ、あらかじめ、

pkg_add -r cvsup-without-gui

をやって、cvsupを入れておかないとだめです。
429ひろゆき@どうやら管理人 ★
垢版 |
04/12/30 04:31:26ID:???
>>427
# -- use.perl generated deltas -- #
# Created: Tue Oct 12 12:12:01 2004

の設定ファイルは、どこにあるんでしょうか?
430FOX ★
垢版 |
04/12/30 04:31:34ID:???
なんか今日は調子わるいっす
二回もコンピュータに負けてしまった < AoM
431ひろゆき@どうやら管理人 ★
垢版 |
04/12/30 04:34:08ID:???
おぉ、、既に書いてありました。。すいません。
432root▲ ★
垢版 |
04/12/30 04:34:33ID:???
>>429
あ、もしかしてPerlはportsやpackagesじゃなくて、
コンパイルして入れたですか、、、。ううむ。

だったら、/etc/make.confはないと思うので、
とりあえず>>427の↓のが入った /etc/make.conf を作ればいいと思われ。
433root▲ ★
垢版 |
04/12/30 04:34:46ID:???
>>431
あ、りょうかい。
434FOX ★
垢版 |
04/12/30 04:39:06ID:???
>>422
ということは書ける機能は備わっているということかな、
435root▲ ★
垢版 |
04/12/30 04:42:11ID:???
>>434
その理解でよいと思います。

http://www.att.or.jp/books/perlmod/
http://www.att.or.jp/perl/man/perlmod.1.html より

パッケージのコンストラクタとデストラクタ

パッケージのコンストラクタとデストラクタとして機能する、2 つ
の特別なサブルーティン定義があります。 それは、BEGIN ルーテ
ィンと END ルーティンです。 このルーティンでは sub は省略で
きます。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況