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

Perlコーディング初心者質問スレ Part 53

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2006/11/26(日) 14:38:23ID:SlmGsFMB
Perlのコーディングで困ってる人のスレです。

【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。

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

最低でも1と3が無いと誰も答えられないよ。
ソース貼る時は、全角スペースでインデント忘れずに。
良い回答は良い質問から。一緒に勉強しましょう。

お勧めサイトは >>2-10

前スレ http://pc8.2ch.net/test/read.cgi/php/1153987463/
過去ログ倉庫 ttp://user.ftth100.com/mirrorhenkan/perl/
0002nobodyさん2006/11/26(日) 14:40:22ID:???
ム板Perlスレより 1 of 2

[プログラミング自体の経験が無い奴はまずココを読め]
Perlプログラミング講座: http://www.site-cooler.com/kwl/perl/

[本]
リャマ: http://www.oreilly.co.jp/books/4873111269/
駱駝: http://www.oreilly.co.jp/books/4873110963/
Effective Perl: http://www.ascii.co.jp/books/detail/4-7561/4-7561-3057-7.html
クックブック: http://www.oreilly.co.jp/books/4873112028/

[オンラインマニュアル] (追加)
最新のドキュメント: http://search.cpan.org/~nwclark/perl-5.8.8/
perl5.8.xのドキュメント(一部): http://www.kt.rim.or.jp/~kbk/perl-5.8/
perl5.005_03 のドキュメント: http://www.kt.rim.or.jp/~kbk/perl5.005/
日本語ドキュメント検索: http://www.cpan.jp/search.cgi
perldoc.jp: http://www.perldoc.jp/
Perldoc.com: http://www.perldoc.com/
0003nobodyさん2006/11/26(日) 14:41:13ID:???
ム板Perlスレより 2 of 2

[モジュール]
CPAN.com: http://search.cpan.org/
河馬屋二千年堂: http://homepage3.nifty.com/hippo2000/

[テクニック]
Perlメモ: http://www.din.or.jp/~ohzaki/perl.htm
Perlのページ: http://homepage1.nifty.com/nomenclator/perl/
Perlの小技: http://homepage3.nifty.com/hippo2000/perltips/index.htm

[Perl5.8Unicodeメモ]
http://www.pure.ne.jp/~learner/program/Perl_unicode.html
http://www.namazu.org/~tsuchiya/perl/perl-5.8.html
http://www.lr.pi.titech.ac.jp/~abekawa/perl/perl_unicode.html
0004nobodyさん2006/11/26(日) 14:41:45ID:???
関連スレ
CGI: Common Gateway Interface part 13
http://pc8.2ch.net/test/read.cgi/php/1126436361/

【Perl,CGI】参考書籍 第三版
http://pc8.2ch.net/test/read.cgi/php/1030209573/

【Perl】ファイルロック(排他処理)について語ろう
http://pc8.2ch.net/test/read.cgi/php/1024795138/

★負荷軽減対策委員会(Perl、PHP)★
http://pc8.2ch.net/test/read.cgi/php/1034645635/

CGIに依存しないPerlの話題一般/Part2
http://pc8.2ch.net/test/read.cgi/php/1030548610/

★三 【 スクリプト改造工房 PART 9 】 ★三
http://pc8.2ch.net/test/read.cgi/php/1143834740/

【 スクリプト改造依頼スレ 】(丸投げ) part5
http://pc8.2ch.net/test/read.cgi/php/1141174205/
0005nobodyさん2006/11/26(日) 14:51:35ID:tkb0DDKs
>>1乙
000612006/11/26(日) 17:42:11ID:???
貼り順まちがいた...orz
0007nobodyさん2006/11/26(日) 17:50:07ID:???
jcode.plでutf-8→eucの変換って行えないのでしょうか?

jcode::convert(\$Line,'euc');
0008nobodyさん2006/11/26(日) 19:05:37ID:???
UTF8非対応だから
0009nobodyさん2006/11/26(日) 22:01:06ID:???
いい加減Jcode.pmなりEncode.pm使おう
0010nobodyさん2006/11/26(日) 22:46:05ID:???
2chのように、時間に22:27:00:00まで表示するにはどうすれば良いのでしょうか?
0011nobodyさん2006/11/26(日) 23:15:07ID:???
表示されてないお
0012nobodyさん2006/11/26(日) 23:22:34ID:???
>>11
VIPでは00:00:00:00まで出るよ
0013 ◆TWARamEjuA 2006/11/27(月) 00:03:22ID:????BRZ(6677)
00:00:00.00ですね♪
Time::HiRes 使ってるです♪
0014nobodyさん2006/11/27(月) 01:00:43ID:???
>>13
どうもありがとうございます。
0015nobodyさん2006/11/27(月) 01:47:56ID:VGuJADoD
あぁ、そんな無駄なことに貴重なCPUサイクルを消費して・・・
0016nobodyさん2006/11/27(月) 04:01:18ID:???
関数のエラー時の戻り値って何にしてます?
0や-1を返す場合が多いと思いますが、undefにしない理由って何かあるんでしょうか。
undefなら0と同じくfunc() or dieなんて呼び方もできるし、undefの可能性ありと
常に思っておけばprint func()なんて不用意に書かなくなるかなと思ったんですが。

use warningでundefをprintするなと大量に警告されて、関数の書き方間違ったかなと
思ったりしました。

0017nobodyさん2006/11/27(月) 09:39:53ID:???
undefを返せばいいと思いますよ
私は以前から 0 or DATA で返してるので、今からそのクセを治すのに苦労しそう・・・
0018nobodyさん2006/11/27(月) 11:28:23ID:???
undef 一択
0019nobodyさん2006/11/27(月) 11:43:26ID:???
return ();

なんて記述もよく見かけるけど、これは
・リストコンテキストなら空リスト
・スカラコンテキストならundef
になるって事でおk?
0020nobodyさん2006/11/27(月) 14:23:58ID:???
>>19
むしろ return; だけでおk
0021nobodyさん2006/11/27(月) 15:21:54ID:???
return (); と return; の違いはなんじゃらほい?
0022nobodyさん2006/11/27(月) 16:19:33ID:???
2chの30秒規制みたいなのをつけたいんですが
どのようにすればいいでしょうか?
0023nobodyさん2006/11/27(月) 16:26:08ID:w7/znFw6
cookie
0024nobodyさん2006/11/27(月) 18:28:22ID:???
>>21
横だけど、
処理を意識して書くか perl に任せるかの違いじゃね?
呼び出し元にとってみればどっちも同じ挙動でしょ。
0025nobodyさん2006/11/27(月) 18:34:15ID:???
配列にundef代入したら要素数==1
0026nobodyさん2006/11/27(月) 18:53:55ID:???
>>16
分ってる人もいるっぽいが、
return () ; or return ; の二択しかないよ(実質一択)。
かなり有名なネタだ。

初心者スレなので参考 URL を。
ttp://d.hatena.ne.jp/hyuki/20060406
0027nobodyさん2006/11/27(月) 19:13:29ID:???
crypt (angokashitaimoji,'$1$$');

↑このようなほうほうで暗号可したのですが
アルファベットのほかに、どのような記号が使われるのでしょうか?
リストがのってるサイトがあったらお願いします。
0028nobodyさん2006/11/27(月) 19:21:19ID:???
>>27
perldoc -f crypt
0029nobodyさん2006/11/27(月) 19:27:39ID:???
>>28
?
0030nobodyさん2006/11/27(月) 20:00:40ID:???
>>27
perlでは決まっていないので使用するシステムのcryptライブラリのマニュアルなどを
参照。たとえばこんなの。

ttp://www.linux.or.jp/JM/html/LDP_man-pages/man3/crypt.3.html
0031nobodyさん2006/11/27(月) 20:05:25ID:???
>>30
どうもありがとうございます
0032nobodyさん2006/11/27(月) 21:24:09ID:???
お聞きしたいのですが
CGIファイルの中身って見ることってできるんでしょうか?
HTMLは見れますが
CGIの中身って見れませんよね?
CGIの中身というのは、.cgiファイルのうp前の状態です。
0033nobodyさん2006/11/27(月) 21:27:54ID:???
鯖の設定によっては見れる
0034nobodyさん2006/11/27(月) 21:56:02ID:???
>>33
返信ありがとうございます。
どのような設定をすれば見れなくできますかね?
有料鯖なのですが
わたしでもその設定はいじれるのでしょうか?
0035nobodyさん2006/11/27(月) 22:10:03ID:???
.htaccessで
または全ディレクトリにindex.htmlを
0036nobodyさん2006/11/27(月) 22:14:13ID:???
CGIのソースの読める読めないはindex.htmlがどうとかそういう問題とは違わないか?

とりあえず>>34の使っている鯖がCGI可なのかどうかが問題だ。
そういえばちょっと前にCGI不可の鯖に.cgiで置いてソース晒してた椰子が居たなあ…。
0037162006/11/27(月) 22:21:07ID:???
みなさん、どうもありがとうございます!
特に>>25,>>26 ありがとう

今日まさにこんなことやりそうになってました。undef返したら真なんですね。
(@array = &func()) or 〜

return;と書くとリストコンテキストでは空の配列を、スカラコンテキストでは
undefを返す、つまり
return wantarray ? () : undef;
と書くのといっしょってことですね。危うく間違った理解で突き進むところでした。
0038nobodyさん2006/11/27(月) 22:23:31ID:???
undefを返すなら、definedでチェックするようにしようぜ
0039nobodyさん2006/11/27(月) 22:58:38ID:???
>>35-36
どうもありがとうございます。
.htaccessで設定できるのでしょうか?
やりかたがのってるサイトが見つからないので
よかったら教えてください
0040nobodyさん2006/11/27(月) 23:13:26ID:???
>>39
その前にちゃんとCGIが動く鯖なんだろうね?
0041nobodyさん2006/11/27(月) 23:13:59ID:???
>>40
はい
0042nobodyさん2006/11/27(月) 23:19:09ID:???
それなら適切にパーミッションを設定してやれば
ブラウザでアクセスしていきなりソース丸見えという事はないと思うよ。
0043nobodyさん2006/11/27(月) 23:19:55ID:???
とりあえず実行属性つけちゃえば問題ない
0044nobodyさん2006/11/27(月) 23:25:23ID:???
>>42
ブラウザというのは、「IE」や「Sleipnir」のことでしょうか?
>>43
やってみます。
0045nobodyさん2006/11/27(月) 23:26:52ID:???
知識が底辺過ぎるし、スレ違いというか板違いなので終了
0046162006/11/27(月) 23:35:54ID:???
昔、CGIのソース丸出ししたことあるなあ。当時は原因不明だったけど、
大方htaccessの設定だったんだろうなあ。下記とかかな。

AddHandler cgi-script .cgi
0047nobodyさん2006/11/28(火) 00:12:50ID:???
>>46
httpd.confですかね?
0048nobodyさん2006/11/28(火) 00:15:03ID:???
htaccessを無視するのか
おまえ酷すぎ
0049nobodyさん2006/11/28(火) 00:40:58ID:???
httpd.confであってるんだけど、レンタルサーバだといじれないので、
httpd.confの設定をhtaccessで上書きするってこと。

全然はずしてるかもしれないけど、CGIは基本的にcgi-bin内で実行、
それ以外はhtaccessいじってね、っていう仕様なのかもね。
0050nobodyさん2006/11/28(火) 00:43:31ID:???
ほぉほぉ
0051nobodyさん2006/11/28(火) 00:44:27ID:???
ありがとうございます。
0052nobodyさん2006/11/28(火) 00:45:28ID:5n8a+rNm
文字列の入った変数中に、指定した文字が
ある場合true、ない場合falseを返す変数があったら教えてください。
0053nobodyさん2006/11/28(火) 00:46:41ID:???
index
0054nobodyさん2006/11/28(火) 00:47:22ID:???
どうしてもTRUE|FALSEでほしいなら自前の関数でラッピングしてください
0055nobodyさん2006/11/28(火) 00:48:20ID:???
return undef;の話はPerlベストプラクティスに載ってるね。
0056nobodyさん2006/11/28(火) 02:23:57ID:???
<FORM action="a.cgi" method="POST">
#いろいろな項目入力
<INPUT type="submit" value="実行a">
</FORM>

実行aボタンを押すと、a.cgiが実行されますが、
実行aボタンを押して同時に下のb.cgiを実行する
方法ありますでしょうか。

<FORM action="b.cgi" method="POST">
#いろいろな項目入力
<INPUT type="submit" value="実行b">
</FORM>

a.cgiの処理コードの中に、b.cgiの処理コードを
書くぐらいしか思いつきません。

よろしくお願いします。
0057nobodyさん2006/11/28(火) 05:30:21ID:PG2nYwJ4
こんな時間にすいません。誰かいたら教えて下さい
phpで例えば<?php include("○○.php"); ?>というのがあります。
これは○○.phpを上の記述を書いたphpに表示させることができます。

perl(cgi)も同様なことできますでしょうか?
index.cgiにabc.cgiを表示させたいんですけど。
やり方ありましたら教えて下さい m(_ _"m)ペコリ
0058nobodyさん2006/11/28(火) 09:44:54ID:???
>>56
一つの体で、別々の場所に行く電車に乗れますか?
自分で思いついた方法で大丈夫です。

>>57
つ require、or module
0059nobodyさん2006/11/28(火) 10:10:33ID:???
>>58
レスありがとうございます
軽くしらべてみたんですが難しいですね
それでできればいいんですが・・・
がんばってみます
0060nobodyさん2006/11/28(火) 10:44:39ID:???
>>58
多重影分身すればいいのか
0061nobodyさん2006/11/28(火) 10:54:01ID:???
チャクラが人並以上に必要だってばよ
0062nobodyさん2006/11/28(火) 14:47:00ID:???
@grepedarray = grep(/^[A-Z]/,@array);
こういう文に置換 - s/ / / -を組み合わせたいのですが出力が上手く表示できません
どうしたらよいでしょうか?
0063nobodyさん2006/11/28(火) 15:01:43ID:???
ようわからんが map も使えば?
0064nobodyさん2006/11/28(火) 15:08:26ID:???
@grepedarray = map { /^o^\ } grep(/^[A-Z]/,@array);
0065nobodyさん2006/11/28(火) 15:13:05ID:???
ちょw 誰が フッジサーン 使えと言ったwwwww
0066nobodyさん2006/11/28(火) 15:16:09ID:???
map {push(@grepedarray) if(s///);} @array;
これでもおk?
0067662006/11/28(火) 15:21:19ID:???
連投すまん
push(@grepedarray)
じゃなくて
push(@grepedarray, $_)
じゃないとだめかも
0068nobodyさん2006/11/28(火) 15:55:32ID:???
それならforeach使えばいいのに。
0069nobodyさん2006/11/28(火) 19:55:31ID:???
>>66-67
それはダメ。mapを使うなら、返り値を利用するべき。
0070nobodyさん2006/11/28(火) 19:56:25ID:???
ごめん、「ダメ」はいいすぎた。あくまで「おすすめできない」って事でひとつ・・・
0071nobodyさん2006/11/28(火) 20:59:18ID:???
素直に block で
@grepedarray = grep { s/ / / ; /^[A-Z]/ } @array ;
@grepedarray = grep { $flag ++ if /^[A-Z]/ ; s/ / / ; $flag } @array ;
じゃ駄目なのか?(適当に書いたが)
0072nobodyさん2006/11/28(火) 21:04:48ID:???
取得しない値まで置換とかする必要ないだろ・・・常識的に考えて・・・
0073712006/11/28(火) 21:17:03ID:???
>>72
そうだ罠。(実際書く時には当然もっと丁寧に if 文書くけどさw)

ただ @array に grep でアクセスした後、map or foreach で
アクセスするなら実質 2 回のループなわけで…。
そっちも十分に無駄っぽいよね。
0074nobodyさん2006/11/28(火) 21:34:23ID:???
そんな事言ってたらPerlでプログラミングできませんよ(´・ω・)
もっと富豪的に
0075nobodyさん2006/11/28(火) 21:43:35ID:???
grep 使ってる時点で十分富豪w
0076 ◆TWARamEjuA 2006/11/28(火) 22:00:53ID:????BRZ(6677)
@grepedarray = grep {
 /^[A-Z]/
  ? s/ / /
   ? 1
   : 1
  : undef
 } @array;
0077nobodyさん2006/11/28(火) 22:05:24ID:???
ここらへんで誰かが Bench ってくるとエスパー
0078nobodyさん2006/11/28(火) 22:10:11ID:???
ふと思ったんだが、処理速度のbenchならBenchmark.pmだけど
メモリのbenchってどうやんだ?やる方法ある?
■ このスレッドは過去ログ倉庫に格納されています