トップページ⇒php
984コメント309KB

【Perl】初心者コーナーPart11

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

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

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

参考書籍はこちら【【Perl,CGI】参考書籍 第2版 】
http://pc.2ch.net/test/read.cgi/php/988809842/
CGIの質問はこちら【CGIだけどなんか質問ある Pert 5.01 】
http://pc.2ch.net/test/read.cgi/php/1015127347/l50
その他の雑多な話題は、【CGIに依存しないPerlの話題一般】
http://pc.2ch.net/test/read.cgi/php/991313362/

過去ログ、その他の役立ち情報は>>2-10を見よう。
0002nobodyさん02/03/27 12:54ID:wAXxxOxP
[過去ログ]
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/test/read.cgi/php/996075607/
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/test/read.cgi/php/1009549309/
Part10 http://pc.2ch.net/test/read.cgi/php/1014556702/

[ひまぢん氏のミラー]
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
0003nobodyさん02/03/27 12:54ID:wAXxxOxP
[総合]
 ・Perl Com: http://www.perl.com/pub/
 ・CPAN.com: http://search.cpan.org/
 ・ActivePerl: http://www.activestate.com/
 ・CGI-ML:http://forest.ne.jp/cgi-ml/
[お薦め]
 ・Perl Recipes: http://www.effectiveperl.com/recipes/
 ・Perlメモ: http://www.din.or.jp/~ohzaki/perl.htm
 ・Randal's WebTechniques columns: http://www.stonehenge.com/merlyn/WebTechniques/
 ・Perlの部屋: http://www.cc.rim.or.jp/~midorin/mad-p/perl/index.html
 ・Perl初心者の部屋:http://www.harukaze.net/~mishima/perl/
 ・Perlリファレンス:http://www.big.or.jp/~mio/ga/pl/plref/pl_ref.htm
 ・Perlのページ:http://homepage1.nifty.com/nomenclator/perl/
[Document&Tutorial]
 ・Perl News: http://www.news.perl.org/
 ・Perl Monks: http://www.perlmonks.org/
 ・PerlMonth - Online Perl Magazine - : http://www.perlmonth.com/index.html 接続不能
 ・use Perl All The Perl: http://use.perl.org/
 ・Learn Perl - Perl Education: http://www.devdaily.com/perl/edu/index.shtml
 ・Perldoc.com: http://www.perldoc.com/
 ・Using Perl5 in Web: http://docs.rinet.ru/Using_Perl5_in_Web/
 ・Rex Swain's Home Page: http://www.rexswain.com/
 ・Robert's Perl Tutorial: http://www.netcat.co.uk/rob/perl/win32perltut.html
 ・Perl Tuts: http://savage.net.au/Perl-tutorials.html
 ・Beginning Perl Tutorials: http://www.pageresource.com/cgirec/index2.htm
 ・jcode.pl の私的な解説書: http://www.mikeneko.ne.jp/~lab/kcode/jcode.html
 ・Logical Choice Software, Home Page: http://www.logsoft.com/perltips/
 ・Perlfect Solutions: http://perlfect.com/
 ・The Perl Archive : http://www.perlarchive.com/
 ・Perl6 & Parrot VM についての情報: http://dev.perl.org/perl6/
0004nobodyさん02/03/27 12:54ID:wAXxxOxP
[Module]
 ・Perl Module Reference: http://www.bekknet.ad.jp/~bero/docj/module_/
 ・PPMPackages: http://www.activestate.com/PPMPackages/
 ・河馬屋二千年堂's Page: http://member.nifty.ne.jp/hippo2000/index.htm
[Security]
 ・安全なプログラミングのためのガイドライン:http://www.FreeBSD.org/ja/security/#spg
 ・Perl security:http://www.perldoc.com/perl5.6/pod/perlsec.html
 ・Perl security和訳:http://www.kt.rim.or.jp/%7ekbk/perl5.005/perlsec.html
 ・CGI and Security http://www.ansi.co.jp/tech/cgi/security/
 ・The Unofficial Web Hack FAQ:http://www.nmrc.org/faqs/www/
 ・How to Write Secure Code:http://www.shmoo.com/securecode/
 ・Safe CGI Programming :http://www.improving.org/paulp/cgi-security/safe-cgi.txt
[OS]
 ・Linux日本語マニュアル:http://www.linux.or.jp/JM/
 ・FreeBSD日本語マニュアル:http://www.jp.freebsd.org/man-jp/
0005帝国  ◆JXzsccCc 02/03/27 12:58ID:BFIdDUdC
続き

991 名前:製作板で誘導した人 本日の投稿:02/03/27 12:14 ID:???
$permissionの中身は何?
てかパーミッション設定するのに変数使う必要あるんだろうか・・・・
$file="\.\/$folder\/$filename";
chmod 666,$file;
とかじゃダメ?


992 名前:nobodyさん 本日の投稿:02/03/27 12:26 ID:???
nobodyに0700にされる罠。


993 名前:帝国 ◆9qoWuqvA 本日の投稿:02/03/27 12:39 ID:BFIdDUdC
パーミッションはフォームにいれた値。
だから変数に格納する必要が。。


994 名前:nobodyさん 本日の投稿:02/03/27 12:44 ID:???
パーミッションは8進数で設定するのは別に罠ではないという罠。

立たぬなら 立つまでまとう Perlスレ
0006nobodyさん02/03/27 13:02ID:???
>5
とりあえず、変数に入れずに試してみろ。
自分でも原因究明する努力は忘れずに。

>1:自分はこう言う事がしたい。
>2:それでこんな風にやってみたが・・・
>3:それだとこんなエラーが出て上手く行かなかった。
これ重要。
0007nobodyさん02/03/27 13:08ID:???
octで8進から10進にしたらとアドバイスしようと思ったが、
頭に0を付ければ8進数として解釈するんでないかい?
0008帝国  ◆JXzsccCc 02/03/27 13:32ID:BFIdDUdC
試したけどダメでした。
0009nobodyさん02/03/27 13:36ID:???
>8
umask(0);
じゃあ、これをファイル作成の前においてみて。
0010nobodyさん02/03/27 15:56ID:yW5j0qTy
サブルーチンのパラメータなのですが、
配列を送ろうとすると、パラメータが混ざってしまいます。
回避方法はありませんでしょうか

local ( @aaa , $bbb ) ;
@aaa = ( 0 , 1 , 2 , 3 ) ;
$bbb = "4567" ;
&test( @aaa , $bbb ) ;
exit ;

sub test
{
 local ( @aaa , $bbb ) = @_ ;

 print "\@aaa=@aaa\n" ;
 print "\$bbb=$bbb\n" ;
}

このソースを実行しますと。

@aaa=0 1 2 3 4567
$bbb=

となります。
これを。

@aaa=0 1 2 3
$bbb=4567

このようにしたいのですが
0011nobodyさん02/03/27 15:59ID:???
>10
最初の要素で@aaaの要素数を渡しておけば?
0012 02/03/27 16:05ID:lRPZasZ4
すいません今日Perlをはじめたばかりの者です。
今練習でCHATを本のサンプルから作っているのですが、

&ReadPars(*in)

という入力があるのですが、この「*in」とはどのような意味なのでしょう?
もし宜しければご教授ください。
0013nobodyさん02/03/27 16:06ID:???
普通はリファレンス使うと思う。
ってかなぜmyじゃなくてlocal?
0014こちらも初心者02/03/27 16:14ID:???
>>12
フォームから渡されるデータを格納するハッシュの名前
&ReadParse(*in);
とするとフォームから渡されたデータが
%inというハッシュに格納される

で良いですよね?>諸先輩方
00151302/03/27 16:25ID:lRPZasZ4
>>14
ありがとうございます。
ReadParseというサブクラス(?)に定義されているハッシュに格納するコードを
呼び出してそこに「in」の値を渡し、結果として%inとなるという事ですよね?

では「*」とはどういう意味なのだろう・・・

すいません、せっかく教えていただいているのに・・・
もし宜しければそのあたりが詳しく書いてあるサイトを教えていただけないでしょうか?
検索をかけてもヒットする単語が多すぎて検索できないのです。
00161302/03/27 16:35ID:???
何度もすいませんでした。
inが関係ないという事で検索する事ができました。
*とはいろいろな変数の型を纏めて扱えるようになるものだったのですね(語弊あり?)

お邪魔いたしました。
0017nobodyさん02/03/27 16:40ID:???
&ReadPars(*in)
こんな時代遅れのことをやると恥ずかしいので、忘れた方がいいですよ。
00181002/03/27 16:42ID:yW5j0qTy
>>13

>普通はリファレンス使うと思う。
>ってかなぜmyじゃなくてlocal?

myでのパラメータ渡しの記述例
お教えいただけませんか、よろしくお願いします。
0019nobodyさん02/03/27 16:52ID:???
>>18
localをmyに変えれば?
そして本屋に行ってPerlの本でも買えば?
00201002/03/27 17:23ID:yW5j0qTy
>>19

レスありがとう御座います。
早速試してみました。

>localをmyに変えれば?

my ( @aaa , $bbb ) ;
@aaa = ( 0 , 1 , 2 , 3 ) ;
$bbb = "4567" ;
&test( @aaa , $bbb ) ;
exit ;

sub test
{
 my ( @aaa , $bbb ) = @_ ;
 print "\@aaa=@aaa\n" ;
 print "\$bbb=$bbb\n" ;
}

実行結果:
@aaa=0 1 2 3 4567
$bbb=

残念ながら結果は、変わりませんでした。

>そして本屋に行ってPerlの本でも買えば?
ご指摘ありがとう御座います。
先程、www.amazon.co.jpにて
プログラミング Perl (オライリー社)
Effective Perl (ASCII 社)
の2冊購入いたしました。
00211002/03/27 17:41ID:yW5j0qTy
先程の、配列のパラメータ渡し解決いたしました。

my ( @aaa , $bbb ) ;
@aaa = ( 0 , 1 , 2 , 3 ) ;
$bbb = "4567" ;
&test( \@aaa , \$bbb ) ;
exit ;

sub test
{
my ( $aaa , $bbb ) = @_ ;

print "\@aaa=$$aaa[ 0 ] $$aaa[ 1 ] $$aaa[ 2 ] $$aaa[ 3 ] \n" ;
print "\$bbb=$$bbb\n" ;
}

実行結果:
@aaa=0 1 2 3
$bbb=4567

http://www13.cds.ne.jp/~ohsaru/perl/perlref.html
こちらのページが大変参考になりました。
0022nobodyさん02/03/27 19:03ID:???
>>21
レスキューやKENTのようなヘボの模倣しないで、プロトタイプ使えって。

sub manco(\@$)
{
print "$_[0]->[0]\n";
print "$_[1]\n";
}

@a = qw(1 2 3 4 5);
manco(@a, 10);
00231002/03/27 21:15ID:???
>>22

ようきけや、22よ、
君いつもいるね。

いつもそんなことばかりやっているね。気付いてるかい?
はっきり言って誰も君のこと相手にしてないよ?わかってるの?
それって、自分ではおもしろいと思ってやっいているんだろうね。
きっと、薄ら笑い浮かべてやっているんだろうね。

でもさぁ、君以外の人には全然おもしろくないんだよ。
もしかして自分でもおもしろくないのにやっているんじゃないの?
自分でも何してるのかわからなくなってるんじゃないの?

家族からも近所からも煙たがられているんだね。
友達も彼女もいないんだね。会社でも浮いているんだね。
どこに行っても相手にされないんだね。

ネットでも無視されてここに流れ着いて来たんだね。
ここでさえ相手にされてないじゃん。どうするの?かわいそうに。
もう駄目じゃん。生きていても何もいいことないよ?
どうせ誰からも相手にされないんだから、死んだ方がいいんじゃない?

相手にされないから奇抜な言動で注目を浴びようと必死なんだね。
始めは少し注意を向けてもらったのだろうけど、もう飽きられて完全に 無視されているね。
おもしろくもないのに、意味不明な事を大量に書かれても目障りなんだよね。
それって迷惑なんだよ?気付いてる?

さようなら。この世から消えてくれ。君いるだけで迷惑。
せめて最後ぐらい人里離れた山の中で自殺してね。
00241002/03/27 22:18ID:yW5j0qTy
>>22

プロトタイプ宣言についてですが、

@array = ( 'a' , 'b' , 'c' , 'd' ) ;
$str = "4567" ;
test( \@array , $str ) ;
exit ;

sub test(\@$)
{
my @aaa = $_[ 0 ] ;
my $bbb = $_[ 1 ] ;

print "$aaa[ 0 ]:$aaa[ 1 ]:$aaa[ 2 ]:$aaa[ 3 ]\n" ;
print "$bbb\n" ;
}

実行結果:
a:::
4567

こんな感じに変更してみたのですが、
testへの最初の引数の配列が正しく
@aaaに渡りません。
$_[ 0 ][ ? ]だと問題無く参照できるのですが、
どこか間違ってますでしょうか
0025nobodyさん02/03/27 22:30ID:???
>>24
プロトタイプは呼び出し前に宣言したヤツしか反映されない。

sub foo( prototypes );

foo(args);

sub foo( prototypes ){
...
}
0026nobodyさん02/03/27 22:42ID:???
>>23
分かったからとっとと死ね。
0027nobodyさん02/03/27 23:28ID:???
なんのためにプロトタイプをつかうか説明しろよこのカスどもが!!
まともに説明もできないのかこのガラクタが!!
0028nobodyさん02/03/27 23:50ID:???
>>27のようなヘボこそ使うことをお勧めする。
君も後10年もすれば必要性がわかるかもね。(プ
0029nobodyさん02/03/27 23:57ID:???
>>27
自分より上で自分を呼ばれた場合非常に困る。
0030nobodyさん02/03/27 23:58ID:???
>>29
よって、自分より下に自分のプロトタイプ置くアフォはいない。だね。
0031nobodyさん02/03/28 00:08ID:???
>28
どうやらオマエは説明もできないのに使ってるようだナ!
知ったかぶりがバレてしまって顔が青ざめて必死になって今調べている姿が
目に浮かぶな! 実にこっけいなピエロ君だなオマエは!
無力なオマエは周りの人たちから陰であざ笑われていることさえも気づかずに
一生を過ごしていく、そんなちっぽけな存在のまま残り少ない人生をひっそりと
過ごしていかなければならないオマエの存在価値は小さ過ぎてどうでもいいことだ。
ただ、いまおれに相手してもらえたことだけでもありがたく思って寝ろ!
0032nobodyさん02/03/28 00:10ID:???
>>31
>>29-30を理解してからほざけ。な。
0033nobodyさん02/03/28 00:13ID:???
>>32
馬鹿相手に無茶言うなよw
0034nobodyさん02/03/28 00:25ID:???
プロトタイプ宣言をしたサブルーチンで再帰させる場合には&をつけないとだめですか?

sub foo ($) {
    $_[0] == 0 or &foo($_[0] - 1);
    print $_[0];
}

foo 10;

sub bar ($) {
    $_[0] == 0 or bar $_[0] - 1; # error
    print $_[0];
}

bar 10;
0035nobodyさん02/03/28 00:30ID:???
>>34 >>25のようにかける。
sub bar($);
sub bar ($) {
$_[0] == 0 or bar $_[0] - 1;
print $_[0];
}
0036nobodyさん02/03/28 00:34ID:???
>35
あ、なるほど。勉強になります。
0037nobodyさん02/03/28 05:37ID:Zku7n2yk
質問があります。
Perlのスクリプトって、いったん全部をコンパイルしてから処理をするのでしょうか?
それとも、そのルーチンで必要な部分だけピックアップしてコンパイルするのでしょうか?

なんでこんな質問をするかといいますと、

if ($hoge) { require "hoge.pl"; &hoge(); }
といったソース書いたとします。
$hogeがtrueにならなかったときには、hoge.plの中にエラーがあっても、
警告されないような気がするんです。

だとするのなら、ケースによって全く異なる処理になるようなルーチンは、別のファイルで
作成した方が、スクリプト自体が小さくなり、より高速に処理が終了するのかな?
という風に想像しているのですが。

「むしろrequireで呼び出すファイル分ディスクアクセスが発生したりいろいろで、
 その場合は遅くなる」
という風な想像もあったりするのですが、その辺みなさんはどうお考えなのか、
ぜひお教え下さい。
0038nobodyさん02/03/28 08:53ID:???
>>37
man SelfLoaderが参考になると思う。
■ このスレッドは過去ログ倉庫に格納されています