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

【Perl】初心者コーナー Part18

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん02/11/20 22:04ID:???
いらっしゃーい、Perlの「コーディング」で困ってる人のスレです。

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あたりを見よう。
0698nobodyさん02/12/26 18:04ID:???
perlで一定時刻毎に処理をするようなスクリプトはどうすればよいですか?
処理するところは書けたのですが、「一定時刻に」というところでつまづいています。
0699nobodyさん02/12/26 18:04ID:jnr3kh76
G(3);
sub G{
my $a=shift;
if($a>0){
G($a-1);
print"$a\n";
G($a-1);
}print" \#$a\n";
}
この処理の流れが良く理解できません
アドバイスなどお願いします
0700nobodyさん02/12/26 18:14ID:???
いらっしゃーい、Perlの「コーディング」で困ってる人のスレです。

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

1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。
0701nobodyさん02/12/26 18:45ID:???
>>698
ループを作り時刻をチェックし希望の時刻になったら目当ての処理実行が単純
070269802/12/26 18:54ID:???
>>701 それだと常にperlが実行されている状態になりますよね?
0703nobodyさん02/12/26 19:00ID:???
>698
ありがちな方法なら、「最後のアクセスと時間帯が違えば処理をする」という方法。
1時間に1回の方法なら、最後にアクセスした時の「時間(11時とか)」を保存しておき、
「前回の時間と違ったら(11時じゃなくなったら)処理をする」などでやる。
ただし、1時間以上アクセスがなかったら困ったりする事もある。

あと、鯖がかなり限られるがcronもある。
これはスレ違いだから自分で検索すれ。
0704nobodyさん02/12/26 21:25ID:???
>>685
別プロセスのメモリ(変数)をいじることは不可能。
0705nobodyさん02/12/26 23:31ID:???
>>699
普通に関数を再帰的に呼び出してるだけだが?
それ以上説明のしようがない。
0706nobodyさん02/12/27 00:12ID:BkvjWsIw
厨質で申し訳ないんですが、
mod_perl を入れるために、use strict をしておこうと思ったんですが、

$| = 1;
$ENV{いろんな環境変数};

こういうのも my しないとだめなの?
0707nobodyさん02/12/27 00:15ID:???
>>706
グローバル変数っしょ?

つぅか自分で試しても罰は当たらんと思われ・・・
0708nobodyさん02/12/27 00:54ID:qm28R9Zo
https://self.0038.net/cgi-bin/fcc_tel_dialup_inquiry_usage_form.cgi.pl
フュージョン料金明細で必須項目をテキストにあらかじめ記入しておいて
それと現在の日時をもとに一発で明細結果がでるようする方法はあるでしょうか?
いちいち項目をコピペするのが面倒なんです。
070970602/12/27 01:30ID:BkvjWsIw
use strict; って、全部のファイルにしなあかんの?
例えば、
sample.cgi というCGIプログラムがあったとして

use strict;
$| = 1;
require './common.pl';

としていたとしよう。このとき、common.pl にも use strict は書くべきなのか。
それとも、sample.cgi の use strict を引き継いで、
common.pl には、何も書かなくても自動的に use strict されるのか?
0710nobodyさん02/12/27 01:33ID:???
やってみればいーじゃんかよー
071169902/12/27 01:36ID:BtYEwdxr
実行した際に吐き出される値の流れが
途中からよ〜分かりません
どこで値が保持されどの様に順番に吐き出されるのか?
0712nobodyさん02/12/27 01:37ID:???
common.plはなによ?
パッケージならパッケージ変数になってるし、
use strict; しなくてもそのスクリプト内でしか使わないなら、my とかしとけばいいだけじゃない?

>common.pl には、何も書かなくても自動的に use strict されるのか?
no!
0713nobodyさん02/12/27 02:31ID:???
G(3);
sub G{
>>699
実行してみて。
これでわかる?

G(3);
sub G{
my $a=shift(@_);

my($space) = "";
for(my($i)=$a; $i<3; $i++){$space .= " ";}
print "$spaceここからG($a){\n";

if($a>0){
G($a-1);
print"$space$a\n";
G($a-1);
}
print"$space\#$a\n";
print "$space}ここまでG($a)\n";
}
071469902/12/27 08:47ID:???
>>713
ありがとう
なんとなく感じはつかめました
0715nobodyさん02/12/27 10:20ID:???
>>701
その通り、常に実行ですね
>>703
で出てる様にcronを使う手がありますがユーザーに開放している鯖はかなり少な
いし、perl(スクリプト)での質問でしたので>>701としておきました

笑える手として、webサーバーがあるならhtmlより定期的に呼び出すとかもあるけ
ど、これもスレ違い
0716nobodyさん02/12/27 10:46ID:???
>>715
答えが目の前にあるのにすれ違いか。おめでたいな。
0717nobodyさん02/12/27 20:28ID:pRxcckDo
リファレンスについて、詳しく解説している日本語サイトを
ご存知の方がいらっしゃいましたら、是非教えてくださいまそ。
0718nobodyさん02/12/27 20:35ID:yQoOgQCT
http://www.google.co.jp
0719nobodyさん02/12/27 20:38ID:???
>>717
javaの参照とかCのポインタとかをつまみ食いするのも手だと思う。
0720nobodyさん02/12/28 00:49ID:???
>>719
なるほど。javaは出来ないので、Cの方をつまんで来ます。
0721nobodyさん02/12/28 01:10ID:???
ハッシュのリファレンスで

foreach(keys %HASH){
・・・
}

に相当する処理ってできないんでしょうか?
できるのならやり方教えてホスイ。
0722nobodyさん02/12/28 01:34ID:???
>>721
もっと具体的に書く方がよいラスイ。
0723nobodyさん02/12/28 01:39ID:???
$ref= \%hash;
for (keys %$ref){
    print $_,"\n";
}
0724りゅう02/12/28 12:37ID:7mOI1Cp3
参考書に書いてあった簡易掲示板を真似て作ってるんですが、
その本に付属していたCDのサンプルをLocalhostに置くと動くんですが、
自分で真似て作ったやつだと、エラーが出てしまいます。何回も見なおしたけど
違いが分かりません。どなたか違っている個所を教えてくれるとありがたいです。
0725りゅう02/12/28 12:38ID:7mOI1Cp3
CDに入っているサンプル

#!/usr/local/bin/perl

#==========================================================
#メイン処理
#==========================================================
#ヘッダを表示する
&print_header;

#トップを表示する
&print_top;

#==========================================================
#ヘッダの表示
#==========================================================
sub print_header {
  print "Content-type: text/html\n\n";
   print "<META HTTP-EQUIV=Content-Type CONTENT=\"text/html; CHARSET=Shift_JIS\">";
   print "<html>\n";
print "<head><title>Simple BBS</title></head>\n";
print "<body bgcolor=#fffff0 text=#000000 >\n";
}

0726りゅう02/12/28 12:39ID:7mOI1Cp3
#==========================================================
# 入力画面の表示
#==========================================================
sub print_top {
print "<center><table width=600><tr><td>\n";
print "<br><br><center><h2>Simple BBS</h2>\n";
print "<hr> [ <a href=http://www.marutora.net>;Back To Homepage</a> ] <hr></center>\n";
 print "<form method=post action=bbs1.cgi>\n";
print "<input type=hidden size=20 name=action value=regist>\n";
print "<table border=0>\n";
print "<tr><td align=right>名前 :</td><td><input type=text size=20 name=name></td></tr>\n";
print "<tr><td align=right>E-mail:</td><td><input type=text size=40 name=mail></td></tr>\n";
print "<tr><td align=right>URL :</td><td><input type=text size=40 name=url value=http://>;</td></tr>\n";
print "<tr><td align=right>タイトル:</td><td><input type=text size=40 name=title></td></tr>\n";
print "<tr><td align=right>内容 :</td><td><textarea cols=50 rows=5 name=massage wrap=hard></textarea></td></tr>\n";
print "<tr><td colspan=2 nowrap align=right><input type=submit value=送信> <input type=reset value=書き直し></td></tr></table></form>\n";
print "<hr size=0 align=center>\n";
}

_END_
0727りゅう02/12/28 12:40ID:7mOI1Cp3
漏れが作ったものです。よろしくお願いします。(・A・)

#!/usr/local/bin/perl

#=========================================
#メイン処理
#=========================================
#ヘッダを表示する
&print_header;

#トップを表示する
&print_top;

#=========================================
# ヘッダの表示
#=========================================
sub print_header {
print "Content-type: text/html\n\n";
print "<META HTTP-EQUIV=Content-Type CONTENT=\"text/html; CHARSET=Shift_JIS\">";
print "<html>\n";
print "<head><title>Simple BBS</title></head>\n";
print "<body bgcolor=#fffff0 text=#000000 >\n";
}

0728りゅう02/12/28 12:41ID:7mOI1Cp3
#=========================================
# 入力画面の表示
#=========================================
sub print_top {
print "<center><table width=600><tr><td>\n";
print "<br><br><center><h2>Simple BBS</h2>\n";
print "<hr> [ <a href=http://www.marutora.net>;Back To Homepage</a> ] <hr></center>\n";
print "<form method=post action=bbs1.cgi>\n";
print "<input type=hidden size=20 name=action value=regist>\n";
print "<table border=0>\n";
print "<tr><td align=right>名前 :</td><td><input type=text size=20 name=name></td></tr>\n";
print "<tr><td align=right>E-mail:</td><td><input type=text size=40 name=mail></td></tr>\n";
print "<tr><td align=right>URL :</td><td><input type=text size=40 name=url value=http://>;</td></tr>\n";
print "<tr><td align=right>タイトル:</td><td><input type=text size=40 name=title></td></tr>\n";
print "<tr><td align=right>内容 :</td><td><textarea cols=50 rows=5 name=message wrap=hard></textarea></td></tr>\n";
print "<tr><td colspan=2 nowrap align=right><input type=submit value=送信> <input type=reset value=書き直し></td></tr></table></form>\n";
print "<hr size=0 align=center>\n";
}

_END_
0729nobodyさん02/12/28 13:15ID:???
真似て作ったつーか、丸写ししただけかよ。短いスクリプトなんだから、
本と自分で打ったのを一行ごとに交互に並べ替えて見比べろ。
0730nobodyさん02/12/28 13:19ID:???
>>724
どの段階でどういうエラーが出たのかな?

ちなみに単純に違いと言えば最後から3行目のnameが
「message」<=>「massage」
0731nobodyさん02/12/28 13:20ID:???
>>730ミスった
最後から3行目のprintで・・・でした
0732nobodyさん02/12/28 13:30ID:???
>>730
甘やかさん方が良い。それくらい自分で見つけられんと成長できない。
0733nobodyさん02/12/28 13:54ID:aT8fBpaX
>>724
エラーメッセージ貼れ。
0734nobodyさん02/12/28 13:59ID:???
>>732
とも思ったけど「何回も見なおしたけど」辺りが自分とかぶってつい(汗
しかもタイプミスって辺りが尚更かぶってしまた(激汗

しかし参考書もどうかと、完全にトラップでし>massage
0735 02/12/28 14:07ID:???
http://www2a.kagoya.net/~adults-toybox/sample1.wmv
http://www2a.kagoya.net/~adults-toybox/sample2.wmv
http://www2a.kagoya.net/~adults-toybox/
0736nobodyさん02/12/28 17:51ID:???
エラーメッセージも読めんような糞ったれに情けなんかかけるな。もったいない。
0737nobodyさん02/12/28 19:10ID:tgcla43L
imgboardの話なのですが、削除にパスワードは不要ですよね?あれは一体どうやっているのでしょうか。

http://www.big.or.jp/~talk/t-club/soft/mini_r6/index.cgi
↑現在、配布を中止しているようなのですが、なにかご存じの方、よろしくお願いします。

あ、よく知らないのですがimgboardはPerlではないかも・・・
0738nobodyさん02/12/28 19:15ID:???
>>737
ここってさ、使う低脳用の板じゃないんだ。すまんな。
073973702/12/28 19:20ID:tgcla43L
ごめーん。
0740nobodyさん02/12/28 19:52ID:???
「エラーメッセージ貼れ」といったところで、「Internal Server Errorって出てます」って
オチだろうな。

>>724
あんたの作ったやつ、うちのローカル環境で正常に動いたぞ。
0741nobodyさん02/12/28 19:54ID:???
>>740
じゃあ、

#perl -w omaenokuso.cgi

とかの結果張ってもらう?
0742nobodyさん02/12/28 19:57ID:???
解決した質問にいつまでしがみつきやがりますか?
0743nobodyさん02/12/28 21:06ID:???
>>737
IPの第三セグメントまで一致したら削除する仕様
074472102/12/28 23:54ID:???
>>723
ありがとうございます!
それがやりたかったのです。
>>722分かりにくくてスマソ。
0745nobodyさん02/12/29 02:36ID:9gTPrGHJ
"1" を "<" に、"2" を "<<" に、"3" を "<<<" に、・・・、"99" を "<<<・・・<<<" に・・・

こんな感じに置換したいのですが、どのようにすれば良いでしょうか?
例えば、これの逆なら、

for ($i = 99; $i >= 1; $i--)
{
 $text =~ s/(<){$i}/$i/g;
}

という感じにすれば良さそうなのですが・・・

for ($i = 99; $i >= 1; $i--)
{
 $text =~ s/$i/(<){$i}/g;
}

こう書くことができれば、いちばん早いんですが・・・
0746nobodyさん02/12/29 02:44ID:VsdGeM22
>>745

$text=~s/(\d+)/"<"x$1/ge;

不具合がなくもないが。
0747nobodyさん02/12/29 03:06ID:9gTPrGHJ
>>746
ありがとうございました!

ちなみに勉強不足で "\d+" が何を表しているのか分からなかったりするので、それを調べてから試してみます ^^;
0748745 = 747 = 74802/12/29 03:08ID:9gTPrGHJ
\d は [0-9] でしたね ^^;
0749nobodyさん02/12/29 10:13ID:???
不具合が気になる。
0750nobodyさん02/12/29 13:11ID:apFJB7sH
$hoge = "hoge";
の状態で
$hoge の一番後ろに hageと言うのを足す時は
$hoge = $hoge."hage";
とやるしかないのでしょうか?
0751nobodyさん02/12/29 13:12ID:???
>>750
まぁ、それが一番簡単じゃないの?何か不満?
0752 ◆hMJAPH9PWA 02/12/29 13:23ID:???
>>750
$hoge .= "hoge";
0753nobodyさん02/12/29 16:14ID:???
Perlでブラウザゲームを作りたいです。
それで、勉強って一体何すればいいんでしょ?
とりあえず本読んでBBSの構造くらいは分かるようになりました。
公開されてるゲームのプログラムとか読み漁ればいいのですか?

0754nobodyさん02/12/29 16:18ID:???
Perlでブラウザゲームを作りたいです。
それで、勉強って一体何すればいいんでしょ?
とりあえず本読んでBBSの構造くらいは分かるようになりました。
公開されてるゲームのプログラムとか読み漁ればいいのですか?
Perlでブラウザゲームを作りたいです。
それで、勉強って一体何すればいいんでしょ?
とりあえず本読んでBBSの構造くらいは分かるようになりました。
公開されてるゲームのプログラムとか読み漁ればいいのですか?
Perlでブラウザゲームを作りたいです。
それで、勉強って一体何すればいいんでしょ?
とりあえず本読んでBBSの構造くらいは分かるようになりました。
公開されてるゲームのプログラムとか読み漁ればいいのですか?
Perlでブラウザゲームを作りたいです。
それで、勉強って一体何すればいいんでしょ?
とりあえず本読んでBBSの構造くらいは分かるようになりました。
公開されてるゲームのプログラムとか読み漁ればいいのですか?
Perlでブラウザゲームを作りたいです。
それで、勉強って一体何すればいいんでしょ?
とりあえず本読んでBBSの構造くらいは分かるようになりました。
公開されてるゲームのプログラムとか読み漁ればいいのですか?
0755nobodyさん02/12/29 17:32ID:???
>>753-754 > /dev/null
0756nobodyさん02/12/29 17:39ID:???
>>753
javaれや ブォケ
0757nobodyさん02/12/29 20:05ID:???
>>753
とりあえず自分のローカルのOS(Win or Mac)でゲーム作れや。
それを移植する段階になってからこのスレで聞け。
0758nobody02/12/30 14:19ID:???
こんにちは。
WinXP 上でActivePerl を使用しています。
This is perl, v5.6.1 built for MSWin32-x86-multi-thread

何故か do ループの中で last を使用するとエラーになります。

do {
last;
} while (1);

>Can't "last" outside a loop block

while (1) {
last;
}

では問題ありません。last はdo ループの中では使用できないのでしょうか?
last ラベル;
としてもエラーになってしまう…。
0759nobodyさん02/12/30 14:21ID:???
>758
doループの意味わかってる?
ループの前にdo部分をやるから、その時点ではループになってないぞ。
0760nobody02/12/30 14:29ID:???
>>759
if (1) { ほげほげ; }
と
ほげほげ if (1);

の違いみたいな物でしょうか…ちがうかな(苦笑

do ループの中ではlast 文は使えないのかな。
勉強していたサイトの1つの中に
ttp://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/pe_k02.htm
do ループの中でlast 使用できるような所がありますけれど…残念。

レスありがとうございます。
0761nobodyさん02/12/30 14:55ID:???
do はあくまでブロック構文。
whileなどでループ修飾してもループブロックではない。
漏れはPerlはインタプリタ系、スクリプト系だからと妥協してる。
構造化BASICで出来るのもあるし、そのうち対応してくれるとうれしいYO
0762nobodyさん02/12/30 20:31ID:8PVwYuQF
perlの関数内でstatic変数を宣言できるのでしょうか。
0763nobodyさん02/12/30 21:28ID:neFLd3GG
>>759

LOOP:
 {
  do {
   last LOOP;
  }
 }
0764nobodyさん02/12/30 21:29ID:neFLd3GG
あ。>>758だった。
0765nobodyさん02/12/30 21:32ID:neFLd3GG
>>762
{
 my $static;
 sub hoge {
  $static++;
  return $static;
 }
}
0766nobodyさん02/12/30 21:35ID:neFLd3GG
>>763
whileも抜けてた。。
0767nobodyさん02/12/31 00:21ID:???
>>765
ブロック作るんだ。やってみます。ありがとうございます。
0768カミ02/12/31 04:26ID:eTxvyq7o
>>762
use strict;

$aaaa::val = "Global" ;
↑この記法の変数がGlobal変数として扱われる。
0769カミ02/12/31 05:05ID:eTxvyq7o
>>213
$test =<<"TEST";
ここから始まりです。
<FOO>
hogehogehoge
hogehogehoge
hogehogehoge
</FOO>
ここで終わりです。
TEST

という文字列から<HOGE>から</HOGE>までを抜き出したい場合。
Perlでどんな風にかきゃいいんでしょう?
------------------------------
<FOO>から</FOO>の間違いだね。

@picup=();
for (split("\n",$test)){
push (@picup) if /<FOO>/ .. /<\/FOO>/ ;
}

for $ol (@picup) {
print $ol."\n";
}

perl1行野郎参照
ttp://www13.cds.ne.jp/~ohsaru/perl/oneline.html
0770カミ02/12/31 05:18ID:???
>>769 訂正
push (@picup) if /<FOO>/ .. /<\/FOO>/ ;
 ↓
push (@picup,$_) if /<FOO>/ .. /<\/FOO>/ ;
0771カミ02/12/31 06:16ID:???
他で聞くところ無いので私にも教えてください。
某所のコードをモディファイして作成:try.pl
#try , throw ,catch の定義
sub try( &$ ) {
  my( $tryb, $catchb ) = @_;
  eval { &$tryb };
  if ( $@ ) {
   local $_ = $@;
   &$catchb;
  }
}
sub throw {
  die $_[0] ;
}
sub catch ( & ) {
  shift;
}
print "Throw cath Start\n";
try {
 if ($ARGV[0]=~/Exp1/) { throw "Excep1"; }
 elsif ($ARGV[0]=~/Exp2/) { throw "Excep2"; }
 print "Not throw\n";
}
catch {
/Excep1/ && do { print "catch1:$_\n";};
/Excep2/ && do { print "catch2:$_\n";};
};
0772カミ02/12/31 06:19ID:???
>>771
これは思いの他思い通り動きましたが、、
sub try ( &$ ) の&$と
sub catch ( & ) の& の意味が分かりません。
0773nobodyさん02/12/31 09:04ID:???
プロトタイプ厨 降臨

     ↓
0774nobodyさん02/12/31 09:06ID:???
動きません。助けてください。

mhile($i = 1);
print "gohe"
0775nobodyさん02/12/31 09:19ID:???
>>774
ネタ?
0776nobodyさん02/12/31 09:19ID:???
>>775
じゃなきゃ困るだろう。
0777nobodyさん02/12/31 09:20ID:f3dKkAkh
>>772
perlsubに書いてある。そのままサンプルで出てるよ。

http://www.kt.rim.or.jp/~kbk/perl5.005/perlsub.html
> 、&は“sub”キーワードや連続したカンマを要求 しないような無名サブルーチンを要求します。
0778nobodyさん02/12/31 09:31ID:f3dKkAkh
777で、引用してきた和訳はわけわからん・・

An "&" requires an anonymous sub-
routine, which, if passed as the first argument, does not
require the "sub" keyword or a subsequent comma.

&のところに入るのは、無名関数だけど、1つ目の引数としてとられるなら、
subキーワードや、次の引数と区切るコンマは必要ない。
0779nobodyさん02/12/31 09:33ID:???
>>778
&は(“sub”キーワードや連続したカンマを要求 しないような無名サブルーチン)を要求します。

って事じゃないの?subsequentの訳を思いっきり外してる気がするけれど
0780nobodyさん02/12/31 09:41ID:f3dKkAkh
ぅ。自分はこう理解したんだけど・・

↓実験用
#!/usr/local/bin/perl

sub hoge (&&&) {
print join(':', @_) . "\n";
}

hoge {
}
sub {
},
sub {
};
0781nobodyさん02/12/31 11:10ID:aM0LcM99
778が正解
0782nobodyさん02/12/31 11:47ID:YVY0+rTm
   ,.´ / Vヽヽ
    ! i iノノリ)) 〉
    i l l.´ヮ`ノリ <先生!こんなのがありました!
    l く/_只ヽ    
  | ̄ ̄ ̄ ̄ ̄|
http://muryou.gasuki.com/mona/
0783カミ02/12/31 12:01ID:???
>>777-781さん感謝。おかげで頭の中の霧が晴れて来ました。
頂いた内容からその意味コメントしました。この理解で宜しいか?
sub try( &$ ) {
  my( $tryb, $catchb ) = @_;#try内のブロック,catch含むブロックを設定(呼び側ではカンマで区切る必要なし)
        #共に引数として事前評価されているので実行コードとなっている?
  eval { &$tryb };#try内のブロックを実行(dieを判断したいので敢えてeval内で実行)
  if ( $@ ) {
   local $_ = $@;
   &$catchb;#cathブロック実行
  }
}
sub throw {
  die $_[0] ;
}
sub catch ( & ) {
  shift;#catch内のブロックをそのまま実行。左辺の無いshiftは引数をそのまま評価する?
}
print "Throw cath Start\n";
try {
 if ($ARGV[0]=~/Exp1/) { throw "Excep1"; }
 elsif ($ARGV[0]=~/Exp2/) { throw "Excep2"; }
 print "Not throw\n";
}
catch {
/Excep1/ && do { print "catch1:$_\n";};
/Excep2/ && do { print "catch2:$_\n";};
};
0784nobodyさん02/12/31 12:09ID:f3dKkAkh
sub catch (&) {
shift;
}
は、shiftで、引数を一つもってきて、それが最後に評価したものだから、
それを戻り値として返す。っていう意味だね。
sub catch (&) {
return $_[0];
}
と同じ。
結論としては、無名関数のリファレンスが返される。
0785nobodyさん02/12/31 12:51ID:???
perlの勉強をはじめて半年ほどたち、入門本程度の内容なら理解できました。
ちょっと難しめの本をぱらぱらと読んでみると、
パイプとか、mod_perlとか、よくわからないものばかり。しかも読んでもいまいちぴんとこない。
脱初心者のためにみなさんはどのような事をされましたかっ!?
0786nobodyさん02/12/31 12:55ID:???
>>785
大げさなことしなきゃ入門書程度の知識で掲示板くらいは組めるからなぁ。
mod_系はlinuxの勉強してたときに覚えた。パイプはDOSの時名前だけ聞いて
これまたlinuxで本格的に使い始めた。
0787カミ02/12/31 14:19ID:???
>>784氏ありがとう
てことは、実際ctach内のブロックはsub catch内で実行されるのでなく
sub try の&$catchb;にて戻ったレファレンスが実行されると考えればいいのだね。

PS
 ところでmod_perって何?
0788nobodyさん02/12/31 14:37ID:???
俺も知りたい。mod_perって何?
0789nobodyさん02/12/31 14:51ID:???
mod_perl だよ。
検索すれ。
0790nobodyさん02/12/31 15:01ID:???
>>789
みんなmod_perlは知ってると思われ。
0791nobodyさん02/12/31 15:12ID:TZQCX2rE
ソケットでFTP接続して2ch.txtがあるかないか調べる方法ってありますか?
0792nobodyさん02/12/31 15:17ID:???
>>791
Socketパッケージはあるだろ。

で、何でhttpで行かないのか問いただして良いかい?
079379102/12/31 15:19ID:???
>>792
正直ー、ソケットの方とかあまり詳しくなかったです。
今からhttpでググッてきます。

079479102/12/31 15:25ID:???
ほんとは、FTPでログインをしてファイルを削除できればと試行錯誤しているんですが
for (1..10){
last if(FTP先の削除したいファイルが削除できたら)
削除処理
}
のような形にしたいんです。

ホウホウワカリマスデスカ?
0795nobodyさん02/12/31 15:27ID:???
>>794
ごめん、何がしたいのか1から説明して。
079679102/12/31 15:33ID:???
>>795

1. FTPで指定されたホストにログイン
2. ディレクトリィの移動
3. ファイルを削除するまで削除処理を実行する
4. 削除完了後にログアウト

この一連の処理を行いたいです。
0797nobodyさん02/12/31 15:38ID:???
>>796
いや、それを何に利用するのか。
■ このスレッドは過去ログ倉庫に格納されています