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

【Perl】初心者コーナー Part13

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

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

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

CGIの質問は【CGIだけど、なんか質問ある? part 6】
http://pc.2ch.net/test/read.cgi/php/1019561283/
参考書籍の話題は【【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あたりを見よう。
0002nobodyさん02/05/30 13:06ID:???
[過去ログ]
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/php/kako/996/996075607.html
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/php/kako/1009/10095/1009549309.html
Part10 http://pc.2ch.net/php/kako/1014/10145/1014556702.html
Part11 http://pc.2ch.net/php/kako/1017/10172/1017201229.html
Part12 http://pc.2ch.net/test/read.cgi/php/1019917048/

[ひまぢん氏のミラー]
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/05/30 13:07ID:???
[総合]
 ・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メモ: http://www.din.or.jp/~ohzaki/perl.htm ★読んどけ
 ・Perl Recipes: http://www.effectiveperl.com/recipes/
 ・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/
0004nobodyさん02/05/30 13:08ID:???
[Document&Tutorial]
 ・Perl News: http://www.news.perl.org/
 ・Perl Monks: http://www.perlmonks.org/
 ・use 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/
 ・use Object; : http://perl.infoware.ne.jp/

[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 02/05/30 19:51ID:???
いまさらながら、乙>>1
しかしホント人いねーな。前スレ996でとまってるよ・・・1000ゲッターすらおらんのか
0006nobodyさん02/05/30 19:55ID:???
>5
悩める初心者がいないのは喜ばしい事と思おうじゃないか。

>1
おつ。
0007nobodyさん02/05/31 02:41ID:RZM1Qpf7
http://cgi2.osk.3web.ne.jp/~xxx/C-TALK/BOARD/SYNC-THINK/index.html
これってどっからみても2ch型掲示板なんだけど「he-ch_BBS Ver 0.51 (C)shun-K」
ってなっています。この人の自作なのでしょうか??
0008nobodyさん02/05/31 02:42ID:???
>>6
悩める初心者はいるが、それがperl(CGI/SSI)の分野とすら
判っていないという罠
0009nobodyさん02/05/31 11:17ID:/ptz9nSf
すみません duの出力をハッシュに格納する例で、
親ディレクトリ名キーに、子ディレクトリ名の配列のリファレンスを入れようとしています。
本中の例を見ていますが、どうしても一行解りません。

du hoge
1425 hoge/hoo
19 hoge/hoo/bee
58 hoge/raa

------プログラム途中より-------
($size, $name) = split;
$dirsize{$name} = $size;
($parent = $name) =~ s#/[^/]+$##; ←これ
push @{ $kids{$parent} }, $name;

矢印行は、どのような処理を行っているのでしょうか。
ヒントでも構いませんのでご指南いただけないでしょうか。
よろしくお願いいたします。
0010nobodyさん02/05/31 11:23ID:???
>>9
ヒント:

($parent = $name) =~ s#/[^/]+$##;

これは以下のコードとほぼ同じ

$parent = $name;
$patent =~ s/[^\/]+$//;
0011nobodyさん02/05/31 12:23ID:JMT5UavW
ActivePerlで、再帰的にすべてのフォルダにあるファイルを取り出す
ということをするために

use File::Find;

$dir = "C:\\windows";

find(\&print_dir, $dir);

sub print_dir {
  print $File::Find::name, "\n";
}

というrecurse.jplを実行すると、

syntax error at C:\Perl\lib/File/Find.pm line 2, near "use 5.005_64"
BEGIN failed--compilation aborted at recurse.jpl line 1.

というエラーが出ます。これはどういうことなんでしょうか。
↓はFind.pmの1行めから4行めまでです。

package File::Find;
use 5.005_64;
require Exporter;
require Cwd;

モジュールを使うのは初めてです。
どうぞよろしくお願いします。
0012nobodyさん02/05/31 13:22ID:???
Perlのバージョンが古いってことだす。
新鮮なPerlをインストールしてけろ。
00131102/05/31 13:40ID:JMT5UavW
>>12
どうもありがとうございます!
JperlじゃなくてPerlでやったら動きました。(Jperlが古いってことですよね。)
ホント助かりました。
0014nobodyさん02/05/31 13:55ID:9bWUYmPc
Accessで作成したデータベースファイルをLinuxサーバーに置いてWebからperlを使って操作ってことは可能でしょうか。
いろいろそういうモジュールがないかと探したんですけど見つけることができませんでした。何か方法があるんでしたら教えて下さい。
0015902/05/31 15:20ID:/ptz9nSf
>>10
うをー 
速やかなレスありがとうございました。感涙;;
0016nobodyさん02/05/31 15:50ID:n686HjoS
最近Perlでプログラムを始めてみました。
引数に文字列を入れたら、それぞれの文字のASCIIコードを足して、
10で割ったあまりを返すサブルーチンを作ったんですが、

#呼び出し
$moji = "ABC";
$number = &getid($moji);
print $number;

#ルーチン
sub getid{
 local($tmp) = @_;
 $id = 0;
 @data = split //,$tmp;
 $num = grep //,@data;

 for($i=0;$i<$num;$i++){
  $tmp = ord($data[$i]);
  $id += $tmp;
 }
 return $id %= 10 ;
}

ってやると、返り値が0の時のみ正常に動いて
それ以外の値になる時はこのルーチンの中でプログラムが終わってるようです。
何かヘンなところあるでしょうか?
00171602/05/31 16:09ID:???
すいません、他のルーチンに問題があったようです…
これで得た数値を、jcode.plを用いてSJISに変換しようとしたところで止まってたようです。
板を汚してしまい、申し訳ないです。
0018nobodyさん02/05/31 21:04ID:???
@list 内の $i 番目の要素を抜いて、一番最初にいれたいです。
どうすればいいか教えてください。

例:
$i = 2

●,◆,★,■,▲,▼
  ↓
★,●,◆,■,▲,▼
0019nobodyさん02/05/31 21:11ID:???
>>18
$i = 2;
unshift(@list,splice(@list,$i,1));
0020nobodyさん02/05/31 22:30ID:???
>>19
どうもありがとうございます。
0021nobodyさん02/06/01 05:07ID:???
PerlのTipsがたくさんおいてある、有名なHP教えてください。
よろしく
0022nobodyさん02/06/01 08:08ID:???
>21
>>3
0023山02/06/01 23:23ID:A+zARsIN
foreach $line (@qq) {
($a,$b,$c) = split(/<>/, $line);
if($a eq "abc") { ???????????? }
}
foreachで配列を処理します。$aが、abcだった場合、現在処理中の
配列のセット($a,$b,$c)ごと削除したいんです。
説明わかりにくくてすみませんが、どうすればいいですか?
0024nobodyさん02/06/01 23:29ID:???
>14
これ使って自分でモジュールを作れ。
http://www.vector.co.jp/soft/win95/util/se032901.html
0025nobodyさん02/06/01 23:58ID:???
>>23
delete
0026nobodyさん02/06/02 01:10ID:???
>>25
赤らくだ本によると、それだと連想配列が対象になるんじゃ?

splice とかは?
0027nobodyさん02/06/02 04:53ID:???
連想配列…久しい名だ。
そもそも、23ってwhileの方が…
それか
foreach(@qq){
($a,$b,$c) = split(/<>/, $line{$_});
~~~
0028nobodyさん02/06/02 05:50ID:???
>>27連想配列なら keys は要らないの?
0029もじら02/06/02 10:42ID:???
w2k + httpd + cgi_perl + DBI + posgre7.2 の質問です

DBIをどのように設定したらいいかわかりません
0030nobodyさん02/06/02 11:45ID:???
>>29
こんな投げ遣りな質問久しぶりだ。
君を第一級教えて君に認定しよう!
0031 02/06/02 11:48ID:???
>>29
どのように答えたらいいかわかりません
0032nobodyさん02/06/02 12:18ID:???
>>30-31
まぁまぁ。それが win 厨の特徴だから(藁
0033もじら02/06/02 14:24ID:???
自分でも把握してないので、やはり厨房ですケテー

接続ID = pg_connect("","","DB名");
これはPHPの中の記述です
この書き方は何に依存しているかは不明ですが
それでこの関数でエラーがでました

httpd とポスグレの状態は起動しています
どのように起動していればいいかは不明です
テーブルも作りました

ほんとに質問の仕方もわかりません
0034もじら02/06/02 14:30ID:???
仕組みがわからないのは、CGIとデータベースの間でのやりとりです
おそらくPERLからDB関数でカーソルを得てるとおもうのですが
DB関数はナニに依存しているのか、どこに組み込めばよいのか不明です
VBはOCXとODBCドライバを記述すればよかったのですが

VBでADOをさわったことはあるのですがカーソルは使えます

PERLがカーソル機能をもっているなら、関数を書けばいいだけなのか
不明です。

0035nobodyさん02/06/02 14:35ID:???
誰か>>33-34の翻訳キボン。このままじゃ読めん。
0036nobodyさん02/06/02 14:54ID:???
>>35
PHPだと>>33のようにすればできたけどPerlでDBとのやりとりを行うにはどうすればいいの
他の言語だと>>34のようにできたけど。
やるための準備はできているからPerlでの記述の仕方を教えて。

きっとこんな感じだろ。
0037もじら02/06/02 15:16ID:???
use DBI; # DBIモジュールを読込む
この書き方でDBIの関数を使える

これは正しいですか?

もし正しいなら、DBIモジュールはどこに組み込めばいいのかわかりません
DBIの概要は読みましたが、どこから入手してどこに組み込むのかわかりません

決してソースのキボンヌではないです
でもINSERT文のひとつが実行できたらミッション完了です

よろしくおねがいします
0038nobodyさん02/06/02 15:21ID:???
C compilerとmakeツールを用意してCPANへGO!
つーか「モジュールとはなにか」すら理解せずにDBIを使おうとするのは間違ってます。
■ このスレッドは過去ログ倉庫に格納されています