Perlコーディング初心者質問スレ Part 61
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2010/06/05(土) 21:11:10ID:???【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。
1: 自分はこういう事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。
お勧めサイトは >2 以降
前スレ http://pc11.2ch.net/test/read.cgi/php/1251989472/
0023nobodyさん
2010/06/06(日) 20:31:29ID:???0024nobodyさん
2010/06/06(日) 20:58:46ID:???0025nobodyさん
2010/06/06(日) 21:05:19ID:???0026nobodyさん
2010/06/06(日) 21:09:11ID:???0027nobodyさん
2010/06/06(日) 22:58:20ID:???0029nobodyさん
2010/06/07(月) 06:28:10ID:???constとかdefineみたいな。
0030nobodyさん
2010/06/07(月) 06:50:44ID:???勉強と回答しにだが?
普通は「エラーコードを晒せ」ってのに賛成だが、
これ以上、この人の質問が増えて何かメリットあるか?
リライトしてる様なもんだぞ?
ちなみに前スレ985、このスレ>>3、>>20は俺だ。
大嘘(perl的に間違った物)答えられるのにも辟易すんだよ、
この手の質問には。
>>29
core module の "CONSTANT"
CPAN module の "Readonly"
を使う。
0031nobodyさん
2010/06/07(月) 09:00:06ID:???すごいな。
&ありとなしは同じじゃないので良い子は真似しないようにね。
0032nobodyさん
2010/06/07(月) 09:12:11ID:7ToGpYbm『概念』かな。
どうしてこういう概念が必要なの?Perl独特みたいだけど。
リファレンスに代入せずとも今まで通り、変数に代入するんじゃダメなの?
0033nobodyさん
2010/06/07(月) 09:12:52ID:???weaを扱ってるはずなのにiteを操作してたり、コードが混乱してるように見える。
まず、このサブルーチンで何をやりたいのか文章にしてくれ。
> 1: 自分はこういう事がしたい。
0034nobodyさん
2010/06/07(月) 09:31:22ID:???0035nobodyさん
2010/06/07(月) 10:17:21ID:???&名前; で呼ぶものだと思ってたけど、今は違うのですか?
ネットで拾ってきたプログラムをちょこっと改造するぐらいのことしかしてないんですが
KENT Webとかに代表される一般に出回っているものって、殆んど古いものばっかりなんですかね。
使っている鯖の仕様みたらperl5.8.9なので、そんなに古いほうじゃないみたいですが。
0036nobodyさん
2010/06/07(月) 10:19:23ID:???perlなんて道具に過ぎないんだからさ
0037nobodyさん
2010/06/07(月) 10:33:31ID:???今もあちこちの掲示板とかで、使っているcgiはかなり多い。
むしろ最新の書き方のほうが、使えない鯖もあるので少数派。
ここではバカにする人がいるけど、事実だから。
0038nobodyさん
2010/06/07(月) 10:46:01ID:???http://shorindo.com/tech/tech0002.html
#!/usr/bin/perl
print <<EOF;
HTTP/1.0 401 Unauthorized
WWW-Authenticate: Basic Realm="valid users only"
Content-Type: text/html
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<HTML><HEAD><TITLE>401 Authorization Required</TITLE></HEAD>
<BODY>
<H1>Authorization Required</H1>
</BODY>
</HTML>
を試したんだが、
malformed header from script. Bad header=HTTP/1.0 401 Unauthorized
で動かない(Internal Server Errorになる)
これ、使えないスクリプトを堂々と載せてるの?ぐぐるとここへリンク張ってるとこもいくつかあるんだけど。
0039nobodyさん
2010/06/07(月) 11:27:42ID:???ちゃんと最後のEOFまでコピペってくださいねー
0040nobodyさん
2010/06/07(月) 11:36:32ID:???0041nobodyさん
2010/06/07(月) 11:45:47ID:???いやそれだとそのエラーメッセージにはならないと思うよ。
nphスクリプトになってないんじゃないか? ファイル名間違えたとか?
0042nobodyさん
2010/06/07(月) 12:34:10ID:???ファイル名もあってます。
さっぱりわからんが、ApacheのVerによってエラーになったりするのだろうか。2.2.15だけど。
0043nobodyさん
2010/06/07(月) 12:45:35ID:???わけわからんが解決
0044nobodyさん
2010/06/07(月) 14:01:12ID:???俺もリファレンスワカラン部類なんだけど、それ二次ハッシュとどう違うの?
>>31
ソースくれ。
&の有無関係なくmod_perlだと動かん事しか知らん。
0045nobodyさん
2010/06/07(月) 14:14:32ID:???&については perlsub 参照。
ttp://perldoc.jp/docs/perl/5.10.0/perlsub.pod の 「サブルーチンは、
明示的な & というプリフィックスを付けて呼び出すことができます。 」
あたりから読んでくれ。
動作の違いは抜きにしてもいまはつけない方が普通だな。
0046nobodyさん
2010/06/07(月) 14:38:19ID:e5tZsgVK要するに、省略できるようになってるってことかな?
0047nobodyさん
2010/06/07(月) 15:04:03ID:???0048nobodyさん
2010/06/07(月) 15:04:19ID:???&付けててもいいじゃんw
とは思うが、配布元が奨めてないなら外しておく方がいいのかねん
0049nobodyさん
2010/06/07(月) 15:22:01ID:e5tZsgVK現在、リファレンスとモジュールのところで壁にあたっています。
ネットショップのショッピングカートを作った実績はありますが、これからクレジットカード機能を付加したいと思っていまして、
クレカ代理店への接続をしようと試みています。
0050nobodyさん
2010/06/07(月) 15:24:33ID:???鼻で笑われるとか、ロートルとか言われるぐらいのものだろう。
たまに実害が出るかも知れないが、そのときは気合でなんとかすれば問題なし。
自分の生き様を示して行けばいいよ。
私は実害が出たときに面倒だから付けないけどね。
0051nobodyさん
2010/06/07(月) 15:27:08ID:???0052nobodyさん
2010/06/07(月) 15:34:41ID:???リファレンスとモジュールなら「続・初めてのPerl 改訂版」だな。
あと「Perlベストプラクティス」も読んどけ。
0053nobodyさん
2010/06/07(月) 15:35:46ID:???【Perl,CGI】参考書籍 第四版
http://pc11.2ch.net/test/read.cgi/php/1250989562/
>>51
fooは元々引数を1つ取るサブルーチンだけど、忘れて呼び出すとどうなるか。
use strict;
use warnings;
sub bar{ &foo }
sub foo{ print shift }
bar("Hello, World!");
と
use strict;
use warnings;
sub bar{ foo() }
sub foo{ print shift }
bar("Hello, World!");
を比べるといいよ。
0054nobodyさん
2010/06/07(月) 15:48:32ID:6I7S3VUo>続・初めてのPerl 改訂版」
これか。
http://www.amazon.co.jp/gp/reader/4873113059/ref=sib_dp_pt#reader-link
この本は難しいんだよなあ。(;´Д`)
>Perlベストプラクティス
これも。
http://www.amazon.co.jp/gp/reader/4873113008/ref=sib_dp_pt#reader-link
これらのシリーズは難しくて・・・(;´Д`)
0055nobodyさん
2010/06/07(月) 16:16:24ID:U/buYqwEリファレンスってひょっとして二次元配列などの縦横座標のあるデータを扱う為の概念ですかね?
こんな感じ。
商品コード | 商品名 | 価格 | 内容
商品A
商品B
商品C
これを座標指定で呼び出す為の概念ですかね?
そうだとしたらかなり理解が進んだ気がします。
今、そこのところ勉強中です。
0056nobodyさん
2010/06/07(月) 16:23:10ID:???0057nobodyさん
2010/06/07(月) 17:44:27ID:???0059nobodyさん
2010/06/07(月) 18:02:35ID:ne0ODycTここでのポインタに意味がわからない。
>>57
レガシーってどういう意味?
英和辞書に載っていない。
0061nobodyさん
2010/06/07(月) 18:15:09ID:???0062nobodyさん
2010/06/07(月) 18:22:17ID:yJ6kU2rx私などはバージョンのことなんかまず考えていない。
いつのまにか変わってるみたいな。
バージョンの特徴を生かせないけどさ。
0063nobodyさん
2010/06/07(月) 18:32:22ID:yJ6kU2rxつまり、スカラーや配列やハッシュの指定方法では指定できない場合に使うのがその使用法の一つなのかな?と。
0064nobodyさん
2010/06/07(月) 18:32:40ID:???オブジェクトと思え
0065nobodyさん
2010/06/07(月) 19:14:43ID:???オブジェクトでもないしポインタでもない。
このスレにJAVAとかCに精通してる人が質問しに来るとは
思えんし。
自分の中で理解するのは構わんが、勝手に「~の様なもん」とか
「~と思え」ってーのは無しにしないか?
誰もが貴方達のバックグラウンドを持ってる訳では無い。
0066nobodyさん
2010/06/07(月) 19:17:10ID:???0067nobodyさん
2010/06/07(月) 19:27:14ID:ejsF48jqもし仮に一ヶ所に集まって会議したらまとまるんだろうか?
0068nobodyさん
2010/06/07(月) 19:31:25ID:???0069nobodyさん
2010/06/07(月) 19:49:00ID:???0070nobodyさん
2010/06/07(月) 20:01:08ID:???リファレンスとかオブジェクト指向とか、これがすごく分かりやすかった
0071nobodyさん
2010/06/07(月) 21:03:08ID:fBML121+まだ悟れないでいます。
0072nobodyさん
2010/06/07(月) 21:17:16ID:???素直に参考書の一冊でも読め。
お勧めは既に出てる。
0073nobodyさん
2010/06/07(月) 21:19:37ID:fBML121+007416
2010/06/07(月) 21:35:33ID:Ha23rV7vもうコードが馬鹿な自分でもわかるくらい滅茶苦茶になってるので
もう一回デフォルトのを最初から改造したら解決しましたm(__)m
せっかくレスしてくれた人に申し訳ないです
とりあえず
出直してきます。
「は?何て言ってんのコレ?」っていうのが多すぎました。すみません。
0075nobodyさん
2010/06/08(火) 18:08:50ID:e74okk0Cこの言い方はC言語を知らないと理解できない言い方だよね。
0076nobodyさん
2010/06/08(火) 18:11:03ID:???0077nobodyさん
2010/06/08(火) 18:20:33ID:e74okk0Cネット事業者だから常にネットができる環境下にあるからと思うけど、
何人くらいいるのかな?いや、心強いなとおもって。
0078nobodyさん
2010/06/08(火) 18:38:27ID:???0079nobodyさん
2010/06/08(火) 20:17:58ID:???多次元配列もどきのことだけなんとなくわかればいいんでないの?
このへん。
http://perldoc.perl.org/perllol.html
http://perldoc.perl.org/perldsc.html
0080nobodyさん
2010/06/10(木) 22:50:37ID:e7/5TejENet::SMTPを採用。
どこのサイトもエラーを拾ったりせずに、
$smtp->data();
$smtp->datasend("");
・・
$smtp->dataend();
と、コーディングしていますが。
これって普通はエラーを拾ったりしてやる必要があるんですよね?
メール送信がうまくいかず、各行にor dieを付与してチェックしてみました。
すると$smtp->data()の部分でdieしていました。
・・・が、具体的なエラー内容がわからず。
こういう場合どうしたらいいんでしょうか?
アドバイスをばお願いいたします。
0081nobodyさん
2010/06/10(木) 23:11:27ID:???0082nobodyさん
2010/06/10(木) 23:33:06ID:???0083nobodyさん
2010/06/11(金) 00:04:39ID:???> こういう場合どうしたらいいんでしょうか?
マニュアルとソースを読む。
http://search.cpan.org/dist/libnet/Net/SMTP.pm
008480
2010/06/11(金) 01:15:57ID:HNRsRFk/>83
マニュアルに明記されてます?(見落としてるだけ?
ソースは・・・すいません見てみます!
008580
2010/06/11(金) 02:34:15ID:HNRsRFk/メールアドレスの@がperlに解釈されてしまっていたのが問題でした。
ついで質問なのですが、メールアドレスの受け取りをCGI::Applicationにて
my $mail = $self->query->param('mail');
のような感じで受け取っています。
この部分を
my $mail = 'test@test.co.jp';
とすることで正しくメールが送られることは確認しました。
my $mail = $self->query->param('mail');
の時点で@をperlに解釈させないようにするにはどうしたらいいでしょうか?
受け取ってから@をエスケープすればいいんだとは思いますが、
他にスマートな方法ありましたらアドバイスお願いします。
0086nobodyさん
2010/06/11(金) 03:29:52ID:???0087nobodyさん
2010/06/11(金) 09:02:50ID:???CGIに渡ってくるものがそもそもおかしいんじゃねーの?
0088nobodyさん
2010/06/14(月) 21:40:31ID:mh5UZ2p/方法はないでしょうか?
色々テストのスクリプトを書いているのですが、「エラーが出る」確認の
テストを書こうと思ったら、die で死ぬのを eval することは出来ても
STDERR への表示を消すことが出来なくて困っています。
STDERR への出力を一旦抑制して、また元に戻すといったことはできない
でしょうか?
0089nobodyさん
2010/06/14(月) 22:26:22ID:???0090nobodyさん
2010/06/15(火) 12:07:10ID:FKT5DQzrありがとうございます。分かりました。
0091nobodyさん
2010/06/15(火) 23:46:20ID:???perlで、FTPSによるファイル送信を行いたいと考えております。
調べたところNet::FTPSSLというモジュールがあるのですが、
現在契約しているホスティングサーバーではインストールされて
おりません。
そこでNet::FTPSSLのモジュールをダウンロードしてみると、FTPSSL.pmという
ファイルがありました。このファイルをrequireするなどして、なんとか
インストールしないで動作させたいと考えておりますが、このような
事は可能なのでしょうか?
0092nobodyさん
2010/06/15(火) 23:54:04ID:???0093nobodyさん
2010/06/21(月) 00:35:12ID:5zE9MeIY申し訳ありません。
あまりCatalyst版には人がいないようなので、
こちらにも質問させて下さい。
Catalyst を勉強中です。
モデルをCatalystから分離した方が良いとは
知っていますが、とりあえず勉強中なので、
app_create.pl model で DBIC を作りました。
ところが出来上がった Schema/Result/ 以下の
クラスにメソッドを定義しても呼び出す事が
出来ません。
ログではこのように出ています。
Can't locate object method "foo_bar" via package "DBIx::Class::ResultSet"
見るとResult以下のクラスのベースクラスは
DBIx::Class:Core でした。
自分でも何かとんちんかんな事を聞いている気がするのですが、
Catalyst で ResultSetに メソッドを定義したい
場合はどのようにすればよいか教えていただけますか。
宜しくお願いします。
0094nobodyさん
2010/06/21(月) 07:15:52ID:???カタリーは使ったことないからわからないが。
useし忘れてパッケージ名で呼ぶとそのエラーメッセージがでますよね。
"そのパッケージにそんなメソッドないです"なのでバージョン違いの資料を使ってないか等も疑ってみたらどうでしょう。
0095nobodyさん
2010/06/21(月) 17:53:00ID:???0097194
2010/06/21(月) 23:42:36ID:???ありがとうございます。
やはりそうですよね。。
そこに追加しているんですが、呼び出せないです。
気になったのはResultSet 云々のエラーメッセージがでてるけど、そこのクラス群はDBIC::Core が親になっている事でした。
モデルは自動生成させているので、手では作っていないです。
何かの手順間違いでおかしな事になってるんですかね。
再確認します。
0098nobodyさん
2010/06/22(火) 00:30:08ID:???load_components に ResultSetManager とメソッドに ResultSet 属性が必要なのですね。
Catalyst というよりはまるまるDBICでした。
ありがとうございました。
0099nobodyさん
2010/07/01(木) 11:32:54ID:???/(忘ABC)DEF/ or die;
忘の所に何と書くのか教えてください。
0100nobodyさん
2010/07/01(木) 11:43:38ID:???/DEF/ or die;
じゃだめなん?
0101nobodyさん
2010/07/01(木) 11:47:10ID:???0102nobodyさん
2010/07/01(木) 12:28:30ID:???010399
2010/07/01(木) 12:50:10ID:???>>101
>>102
みなさんありがとうございます。
やりたいのは>>102さんの言う通りなのですが、説明が下手で
どうとでも取れるような書き方だったと反省しています。
回答ありがとうございました。
0104nobodyさん
2010/07/21(水) 09:46:20ID:???$image->Distort("virtual-pixel"=>"Transparent"
と指定しても背景が透過になってくれません。
Black, White, Random など別の物を指定すると変更されます。
ImageMagickの問題なのですが、Perlで使用しているのでこちらへ質問させていただきました。
スレ違いでしたら誘導をお願いします。
0105nobodyさん
2010/07/30(金) 18:42:05ID:???バックグラウンドカラーは設定した?
$image->Set('background' => 'none');
0107nobodyさん
2010/08/02(月) 03:40:13ID:FdS+e4Ne0108102
2010/08/02(月) 04:45:31ID:???0109nobodyさん
2010/08/02(月) 13:10:55ID:???0110Perl神
2010/08/02(月) 17:08:54ID:9KfPyaTP0111nobodyさん
2010/08/02(月) 21:04:27ID:fXTYTb4c配布されてるCGIゲームを改造中の初心者です。とほほのPerl入門とか見ながらやってます。参考書とかは持ってません
モンスターの経験値などを設定するのにモンスターの画像名を番号にして
番号が大きければ大きいほど経験値も多くなる・・・という風にしたかったのですがいい方法が思いつきませんでした。
文字列の中の数字("100.gif"とかの100)を数値に変換して扱う方法を教えて欲しいのですが・・・無いですかね
0112nobodyさん
2010/08/02(月) 21:10:15ID:28r5QWdlmy $file = "100.gif";
my $ex = $1 if $file =~ m/^([0-9]+)/;
print $ex; # 100
こういうこと?
0114nobodyさん
2010/08/09(月) 18:03:38ID:K6ZCyo17巡回して取得したRSSをブラウザに書き出すだけのプログラムです。
チェック先のRSSが200件程度まではうまく動作していたのですが、
現状250件でHTMLへの書き出しが途中で止まってしまいます。
最初はタイムアウトを疑っていたんですが、
ブラウザのkeep-alive、httpd.confのtimeout値も300になっています。
(プログラム実行時間は30秒程度)
スレッド数に上限とかあるんでしょうか?
なにかヒントを頂けたらありがたいです。
よろしくお願いいたします。
0115nobodyさん
2010/08/09(月) 18:18:39ID:???0116114
2010/08/09(月) 18:25:11ID:K6ZCyo17チェック対象のRSS数のスレッドをnewしてthread->joinで終了待ちしてます。
なので、仰るとおり100以上のスレッドを発行している状態です。。。
ありがとうございます。修正してみます。
0117114
2010/08/09(月) 18:38:49ID:K6ZCyo17なのでスレッド数はマックス50件です。
0118nobodyさん
2010/08/09(月) 18:41:09ID:???最終実行日時
実行結果の HTTP レスポンス
取得に掛かった時間
を記録して、どこが引っかかってるのかチェックしてみては?
0119114
2010/08/09(月) 18:51:43ID:K6ZCyo17特定のRSSが原因かと思い、チェック順序を逆順にしたりして検証しましたが、
やはり数が問題のようです。どのようなRSSをチェックさせても220〜225件程度
チェックしたあたりでHTMLの出力がとまってしまいます。
(コンソールでも同様です)
※追加情報
apacheのエラーログには「Out of memory!」、「Ouf of memory(Needed 8164 bytes)」
と記述されていました。
スタックサイズが足りない???
0120nobodyさん
2010/08/12(木) 21:38:33ID:???0121nobodyさん
2010/08/14(土) 15:19:13ID:5o00tDGC*in = $query->Vars();
Encode::from_to(*in, 'shiftjis', 'utf8');
でUTF-8にエンコードされません
やりかたが違うんでしょうか?
0122nobodyさん
2010/08/14(土) 15:50:24ID:5o00tDGCmy $query = CGI->new;
*in = $query->Vars();
foreach (%in) {
Encode::from_to($_, 'shiftjis', 'utf8');
$_ =~ s/</</g;
$_ =~ s/>/>/g;
$_ =~ s/'/&squot;/g;
$_ =~ s/"/"/g;
}
■ このスレッドは過去ログ倉庫に格納されています