Perlコーディング初心者質問スレ Part 61
レス数が1000を超えています。これ以上書き込みはできません。
0001nobodyさん
2010/06/05(土) 21:11:10ID:???【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。
1: 自分はこういう事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。
お勧めサイトは >2 以降
前スレ http://pc11.2ch.net/test/read.cgi/php/1251989472/
0002nobodyさん
2010/06/05(土) 21:11:34ID:???Perlプログラミング講座: ttp://www.site-cooler.com/kwl/perl/
[本]
リャマ: ttp://www.oreilly.co.jp/books/4873111269/
駱駝: ttp://www.oreilly.co.jp/books/4873110963/
Effective Perl: ttp://ascii.asciimw.jp/books/books/detail/4-7561-3057-7.shtml
クックブック: ttp://www.oreilly.co.jp/books/4873112028/
Perl ベストプラクティス: ttp://www.oreilly.co.jp/books/4873113008/
Perl Hacks: ttp://www.oreilly.co.jp/books/9784873113142/
[オンラインマニュアル]
最新のドキュメント: ttp://perldoc.perl.org/
perl5.8.xのドキュメント(一部): ttp://www.kt.rim.or.jp/~kbk/perl-5.8/
perldoc きまぐれ訳: ttp://fleur.hio.jp/perldoc/
perldoc.jp: ttp://www.perldoc.jp/
[モジュール]
CPAN: ttp://search.cpan.org/
河馬屋二千年堂: ttp://homepage3.nifty.com/hippo2000/
[テクニック]
Perlメモ: ttp://www.din.or.jp/~ohzaki/perl.htm
Perlのページ: ttp://homepage1.nifty.com/nomenclator/perl/
Perlの小技: ttp://homepage3.nifty.com/hippo2000/perltips/index.htm
[Perl5.8Unicodeメモ]
ttp://www.namazu.org/~tsuchiya/perl/perl-5.8.html
ttp://www.lr.pi.titech.ac.jp/~abekawa/perl/perl_unicode.html
0003nobodyさん
2010/06/05(土) 22:24:44ID:???と、前スレ993
>&send_item2() の第1引数で $m を渡してるのに、第3引数で $m の中身の一部分を送ること自体が無駄。
$m と、 %m は別物だ。
第三引数 $m{wea} とかは明かに、ハッシュの値だ。$m と混同すんな。
0004nobodyさん
2010/06/05(土) 22:44:10ID:BPQlnKOc0005nobodyさん
2010/06/05(土) 22:53:46ID:???0006nobodyさん
2010/06/05(土) 23:37:59ID:WMYKbA0Dわからないのは何がわからないの?
0007nobodyさん
2010/06/05(土) 23:43:44ID:???あとデリファレンスって言葉がこの先頻出してくると思うが、
これがメンバ変数にアクセスする行為そのもの
実際、この先出てくるであろう、オブジェクトでもリファレンスを使って
実装されてる
0008nobodyさん
2010/06/05(土) 23:48:40ID:???0009nobodyさん
2010/06/06(日) 00:26:23ID:???でも改めて説明されても分からないwww
$cnofig = {
'array' => [0, 1, 2, 3, 4, 5],
'hash' => {'first' => 0, 'third' => 3},
'scalar' => 'monyumonyu',
};
print $config->{'array'}->[1];
1
print $config->{'hash'}->{'third'};
3
print $config->{scalar};
monyumonyu
基本こんな感じでしか使ってない。
初期化してない段階では
$config->{'array'} = [0, 1, 2, 3];
みたいな代入でいいのかな?
わっかんないやw
0010nobodyさん
2010/06/06(日) 08:13:05ID:???0011nobodyさん
2010/06/06(日) 10:59:04ID:???0013nobodyさん
2010/06/06(日) 11:37:51ID:???0014nobodyさん
2010/06/06(日) 11:48:13ID:???やっぱりホスト名の逆引きはできませんか
0015nobodyさん
2010/06/06(日) 13:40:08ID:???0016前スレ921
2010/06/06(日) 16:41:21ID:+nevgJE6my $target = shift;
if ($m{is_full_g}) {
$mes = "$max_depot_g個までしか保管することはできません";
return;
}
if ($weas[$m{wea}][1] eq $target) {
$npc_com = "$items[$m{ite}][1]を倉庫にいれました\n";
my $send_id = unpack('H*', $m{guild});
if (-f "$guilddir/$send_id/depot_g.cgi") {
open (OUT,">> $guilddir/$send_id/depot_g.cgi");
print(OUT "1<>$m{ite}<>\n");
close(OUT);
$m{ite} = 0;
}
}
elsif ($arms[$m{arm}][1] eq $target) {
$npc_com = "$items[$m{arm}][1]を倉庫にいれました\n";
my $send_id = unpack('H*', $m{guild});
if (-f "$guilddir/$send_id/depot_g.cgi") {
open (OUT,">> $guilddir/$send_id/depot_g.cgi");
print(OUT "2<>$m{ite}<>\n");
close(OUT);
$m{arm} = 0;
}
}
001716
2010/06/06(日) 16:48:18ID:+nevgJE6$npc_com = "$items[$m{ite}][1]を倉庫にいれました\n";
my $send_id = unpack('H*', $m{guild});
if (-f "$guilddir/$send_id/depot_g.cgi") {
open (OUT,">> $guilddir/$send_id/depot_g.cgi");
print(OUT "3<>$m{ite}<>\n");
close(OUT);
$m{ite} = 0;
}
}
if ($npc_com) {
&get_depot_cg;
return;
}
$mes = qq|どれを倉庫にいれますか?<br />|;
$mes .= qq|<span onclick="text_set('@ほかん>$weas[$m{wea}][1] ')">$weas[$m{wea}][1]</span> / | if $m{wea};
$mes .= qq|<span onclick="text_set('@ほかん>$arms[$m{arm}][1] ')">$arms[$m{arm}][1]</span> / | if $m{arm};
$mes .= qq|<span onclick="text_set('@ほかん>$ites[$m{ite}][1] ')">$ites[$m{ite}][1]</span> / | if $m{ite};
$act_time = 0;
}
&send_item2を無くして自分で分かるように直に書いてみたのですが
結果は変わらずエラーのままでした。
$guilddir/$send_id/depot_g.cgiには書き込まれましたが
$m{ite} = 0;が実行できないみたいです。どうすればいいんだろ・・・orz
001814
2010/06/06(日) 18:04:21ID:???0019nobodyさん
2010/06/06(日) 18:33:08ID:???0020nobodyさん
2010/06/06(日) 18:42:10ID:???@itesと、@itemsどっちかがtypoだ。
これ↓、前のバージョン用に整理した奴。
sub hokan {
my $target = shift;
if ($m{is_full_g}) { $mes = "$max_depot_g個までしか保管することはできません"; return; }
# 構造が同じ二次元配列を、別名で三つ作る必要あんの?
# $items[$m{ite}][1]とどっちが正しいの?
my @keys = qw( wea arm ite );
my %hash = ( wea => $weas[$m{wea}][1], arm => $arms[$m{arm}][1], ite => $ites[$m{ite}][1], ) ;
# if ~ elsif は、やることが同じなら
# for( next if 条件 ; 処理 ; last ) に纏められる
# typo も減らせるからそちらお勧め
for my $i ( 0 .. $#keys ){
next if $hash{$keys[$i]} ne $target ;
$npc_com = "$hash{$keys[$i]}を倉庫にいれました\n";
# $m{$keys[$i]}はsend_item2内で使ってないよ?渡すの?それでも
&send_item2($m, $i + 1, $m{$keys[$i]});
$m{$keys[$i]} = 0;
last ;
}
if ($npc_com) { &get_depot_cg; return; }
$mes = qq|どれを倉庫にいれますか?<br />|;
for my $key ( @keys ){
next if ! $m{$key} ;
$mes .= qq|<span onclick="text_set('@ほかん>$hash{$key} ')">$hash{$key}</span> / | ;
}
$act_time = 0;
}
0021nobodyさん
2010/06/06(日) 20:19:37ID:???さすがにソースだけでは辛い
0022nobodyさん
2010/06/06(日) 20:28:17ID:???(今回の明かに)typoが原因のエラーとか、そんなん自分で解決すべきだ。
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;
}
0123nobodyさん
2010/08/26(木) 19:02:59ID:???ヒントなどあればお願いします。
PerlでHTMLを出力し、その中で動的にグラフを生成しようとしています。
まず以下のようにして、望みどおりの出力を得ました。
print '<img src="graph.cgi">'; #OK
これを以下のようにすると、画像でなく文字列が表示されてしまいます。
print '<img src="'. (require 'graph.cgi') . '">'; #NG
またモジュール化してgetした場合も、同じく文字列が表示されてしまいます。
print '<img src="'. $graph->get(\@data). '">'; #NG
なお、いずれも処理側は画像を以下のように出力しています。
print "Content-type:image/gif\n\n";
binmode STDOUT;
print $image->gif; #GD::Graphを使っている
文字列が表示されてしまう場合でも、
出力をSTDOUTからファイルに変えてみれば画像はちゃんと生成されているようです。
疑問1) 1番目の例はOKで他がNGな理由がいまいちわかりません。
疑問2) 3番目のようにOOPな感じで通したい場合、どう記述すればよいのかわかりません。
PerlでなくCGIの範疇だったらすみません。判断がつかないのです。
0124nobodyさん
2010/08/26(木) 19:27:18ID:???graph.cgi でグラフ出力
HTML は
print '<img src="graph.cgi">';
で OK
graph.cgi にパラメータを渡す必要があっても、
graph.cgi?x=??&y=??
っていう風にすればいいだけなので解決できる
0125123
2010/08/26(木) 20:13:27ID:???\@dataとして渡したい内容が、わりと複雑なため(24時間のアクセス統計3〜5種類など)
リファレンスで渡せると楽だったのですが
レスありがとうございました
0126nobodyさん
2010/08/26(木) 21:45:13ID:???つかそれならHTMLは静的でいいんじゃないか
0127nobodyさん
2010/08/31(火) 07:50:54ID:???<img src="data:image/gif;base64,ここ">
でいけるかも
0128123
2010/08/31(火) 14:10:20ID:???モジュールの側で return MIME::Base64::encode($image->gif); として、
これを教えていただいた通りデコート指定(?)つきでimgタグに入れたら見事に表示されました
これですっきりしました。どうもありがとうございました
しかしこれ、PerlというよりHTMLの問題だったかもしれませんね
見分けがつかずこちらで質問してしまい、失礼いたしました
0129nobodyさん
2010/09/04(土) 16:33:18ID:???そんなことしてGD使ってサーバに負荷かけるより
棒グラフなら素直に
$resultW=幅ピクセル;
print '<img src="pink.gif" style="width'.$resultW.'px;height:5px">
とかってやった方が早くね?
円グラフならGD使う意味は分かるが。。
0130nobodyさん
2010/09/07(火) 21:05:39ID:KEDp6nh+崩してしまうので、ある一定の長さ以上は省略したいです。
正規表現に組み入れてできませんよね?
となると、一旦配列に入れて一行ごとに処理せねばなりませんか?
0131nobodyさん
2010/09/07(火) 22:10:00ID:???$text =~ s{($yourURLregex)} {
my($url, $face) = ($1, $1);
...; # $face を適当に縮める
qq|<a href="$url">$face</a>|;
}eg;
0132nobodyさん
2010/09/07(火) 23:24:24ID:???テストで
$yourURLregex= "s?https?://[-_.!~*'()a-zA-Z0-9;/?:@&=+$,%#]+";
$face = substr($face,1,30);
でやってみたけど、エラーが出ちゃいます
下の式抜いてもだめです
0133nobodyさん
2010/09/08(水) 00:34:07ID:???1回目でurlにマーク付けて、2回目でマーク内をsubstrでカット
不格好ですけど
0134nobodyさん
2010/09/08(水) 05:08:05ID:???エラーって出るのは、あなたがエラーしてるからからでは
0135nobodyさん
2010/09/08(水) 17:31:08ID:???0136nobodyさん
2010/09/08(水) 17:47:40ID:J/6++5D2さくらインターネットですが。
0137nobodyさん
2010/09/08(水) 19:15:02ID:???してみ?
0138nobodyさん
2010/09/08(水) 21:52:41ID:???> $yourURLregex= "s?https?://[-_.!~*'()a-zA-Z0-9;/?:@&=+$,%#]+";
エラーにはならないが $, が展開される。
http://perldoc.perl.org/perlvar.html
>>136
>>1
>>137
それだけでは実行結果に影響しない。
http://perldoc.jp/docs/perl/5.12.1/perlop.pod
print(
"'abcde' =~ '$_' => ", 'abcde' =~ $_ ? '' : 'un', "match\n",
"'abcde' =~ /$_/ => ", 'abcde' =~ /$_/ ? '' : 'un', "match\n",
"'cdefg' =~ '$_' => ", 'cdefg' =~ $_ ? '' : 'un', "match\n",
"'cdefg' =~ /$_/ => ", 'cdefg' =~ /$_/ ? '' : 'un', "match\n",
) for '^[a-e]{5}\z', qr/^[a-e]{5}\z/;
0139nobodyさん
2010/09/08(水) 23:03:55ID:???0140nobodyさん
2010/09/09(木) 21:27:24ID:???0141nobodyさん
2010/09/14(火) 10:39:40ID:RoOJ13yO検索エンジンからのアクセスでキーワードだけ抽出しているんですが、
エンジン毎に左オペランド?が違うのと、文字コードが違うようです。
やっぱりエンジン毎に処理を分岐するしかないですかね?
文字化けが発生する毎に分岐処理に新処理を付け加えています。
なんとか処理を単純化できないだろうか。
0142nobodyさん
2010/09/14(火) 10:54:46ID:???デコード処理はguessとかでどうにでもなるけれども
0143nobodyさん
2010/09/14(火) 11:40:18ID:???でも結局それぞれ違うんだから処理は書かなきゃしょうがない
と思う。
0144nobodyさん
2010/09/14(火) 11:47:53ID:RoOJ13yO手元の逆引き大全の索引をみる限り、両者ともでてこない。
そんなによく使う関数なの?
0145nobodyさん
2010/09/14(火) 11:59:48ID:RoOJ13yOhttp://www.ksknet.net/perl/encodeguess.html
0146nobodyさん
2010/09/14(火) 12:08:36ID:???0147nobodyさん
2010/09/14(火) 12:50:04ID:RoOJ13yOgoogle yahoo bing goo exite biglobe nifty ・・・
そのレベルまでかな。まるっきり知られてないっぽいエンジンまで分岐するとなると分岐が増えて増えて・・・
先日の外部テキストに分離した部分は分岐の部分なんですよ。
require して使う話ね。
これなら、分岐の部分だけ増設できるでしょ。
0148nobodyさん
2010/09/14(火) 13:36:17ID:???perl界隈では有名(なのか?)なアクセス解析スクリプトの AWStats
http://awstats.sourceforge.net/
これのパッケージ内に、検索エンジンごとの定義ファイルみたいなのが含まれてるから、
それを参照するがよろし。
但し基本英語圏のエンジンがほとんどで、日本語圏のサイトは少ない。
あと、各エンジンごとの検索パラメータ、googleならq=,yahooならp=とかもある程度はわかるが、
さすがに文字コードまではわからんから、そこらへんは自前でやる必要があるけど、
かなり参考にはなると思う。
0149nobodyさん
2010/09/14(火) 21:57:32ID:???cgiファイル、ログファイル、HTML出力すべてutf-8にしようと思ってるんですが、
use 〜;やbinmode ~;とか一般的に必要とする物ってあるんでしょうか?
自分の環境はwindowsで借りようと思ってる鯖がfreeBSDでperl5.8のようです。
ついでに文字コードがutf-8Nで改行コードはCR+LFでおkですか?
0150nobodyさん
2010/09/14(火) 22:42:40ID:???> 右も左もわからないんで教えてください。
>>1-2
何から勉強していいのか分からない
http://hibari.2ch.net/test/read.cgi/php/1101491473/
△▲ WebProg 初心者の質問 Part22 ▼▽
http://hibari.2ch.net/test/read.cgi/php/1272872528/
【Perl】掲示板を使ろう!
http://hibari.2ch.net/test/read.cgi/php/988890976/
自分の作ったCGIスクリプトをデバッグするスレ
http://hibari.2ch.net/test/read.cgi/php/1011174442/
自作CGIを評価するスレ
http://hibari.2ch.net/test/read.cgi/php/1049514428/
> 一般的に必要とする物ってあるんでしょうか?
無い。必要な処理を必要なだけ実装しなさいな。
> 文字コードがutf-8Nで改行コードはCR+LFでおkですか?
BOM無しが無難。
http://ja.wikipedia.org/wiki/UTF-8
スクリプトの改行コードは実行環境に、出力の改行コードは
HTTPの仕様や閲覧環境に合わせる。
0151nobodyさん
2010/09/15(水) 07:35:37ID:???その点英語圏は楽でいいよなー
0152nobodyさん
2010/09/15(水) 08:52:32ID:jrRD4zmE0153nobodyさん
2010/09/15(水) 10:56:10ID:FawmhmXvPHPだと$_GETと$_POSTで出来るのですがPerlではどのように書くのでしょうか?
0154nobodyさん
2010/09/15(水) 11:57:40ID:???my $m = new CGI;
my $name = $m->param('name');
0155nobodyさん
2010/09/15(水) 13:38:01ID:5exFybXuしてて$var001、$var002、・・・$var850 くらい変数があります。
スクリプトのはじめに
our $var001;
our $var002;
our $var003;
・
・
とか
my ($var001,$var002,$var003・・・)
みたいなことを書かないといけないのですが、
これをまとめて一括で定義する方法があれば教えてください。
0156nobodyさん
2010/09/15(水) 13:43:17ID:???0157155
2010/09/15(水) 13:49:49ID:5exFybXuあとから、「あ”、しまった!」ってなってます。orz
0158nobodyさん
2010/09/15(水) 13:49:52ID:???my %var
0159nobodyさん
2010/09/15(水) 13:59:12ID:???0160nobodyさん
2010/09/15(水) 14:12:01ID:???0161nobodyさん
2010/09/15(水) 14:21:16ID:q2N7SUAH0162nobodyさん
2010/09/15(水) 14:30:47ID:???そういうプログラムなら、
my $var001;
my $var002;
my $var003;
…
とあえてずらっと書いておいた方が、この後のコードを読むの覚悟しろと宣言しているようでかえってよいかと。
タイプするのが大変というなら、Excelで my $var001; という値を入れて、あとは850行分ドラッグすれば一気に作れるよ。
宣言だけで850行…
それに、同じ悩むなら、すでに書いたコードを直した方がよいよ。それこそperlで置き換えてみれば?
s/\$var(\d{3})/\$var\[$1]/g;
そうすれば、my @var; でok\(^o^)/
スカラー変数を宣言できたところで、どっちみちpushやshiftやspliceのような操作はできないしね。
0163nobodyさん
2010/09/15(水) 14:32:00ID:???サニタイズの方法がわからん
0164nobodyさん
2010/09/15(水) 14:39:17ID:???sub sanitize{
$html = shift;
$$html =~ s/&/&/g;
$$html =~ s/</</g;
$$html =~ s/>/>/g;
$$html =~ s/"/"/g;
$$html =~ s/'/#&39;/g;
return 0;
}
0165nobodyさん
2010/09/15(水) 14:39:34ID:q2N7SUAH@hairetu = '';
も
@hairetu = "";
も、$hairetu[0] に空欄?が入っちゃうのね。
正解は
@hairetu = ();
だた。
配列の初期化(空欄化)って他にどうしてる?
0166nobodyさん
2010/09/15(水) 14:42:09ID:???0167nobodyさん
2010/09/15(水) 14:43:14ID:???ホントにぎやかだねw
0168nobodyさん
2010/09/15(水) 14:46:02ID:???0169nobodyさん
2010/09/15(水) 14:46:19ID:q2N7SUAHそういやそうだなw
しかし、皮肉交じりに人をバカにするその口調は会社でも同じなのか?
だとしたら相当に嫌われてるぞおまえ。
0170nobodyさん
2010/09/15(水) 14:48:59ID:???0171nobodyさん
2010/09/15(水) 14:52:23ID:???0172nobodyさん
2010/09/15(水) 14:54:17ID:???これはどういう概念なんだろうか?
これこそ初期化?
0173nobodyさん
2010/09/15(水) 15:01:44ID:???0174nobodyさん
2010/09/15(水) 15:14:26ID:q2N7SUAHいよ!色男!
0175nobodyさん
2010/09/15(水) 15:18:27ID:???わかったかな
0177nobodyさん
2010/09/15(水) 16:11:27ID:???0178nobodyさん
2010/09/15(水) 16:50:47ID:???0179nobodyさん
2010/09/15(水) 17:06:18ID:???0180nobodyさん
2010/09/15(水) 17:12:15ID:???ただのサブルーチンという言い方はおかしい
0181nobodyさん
2010/09/15(水) 21:27:04ID:st8PUYRkすまん。おれカタカナだめなんだよ。
0182nobodyさん
2010/09/15(水) 22:56:34ID:???> ただのサブルーチンという言い方はおかしい
new という名前だと何か意味あるっけ?
0183nobodyさん
2010/09/15(水) 22:58:17ID:???0184nobodyさん
2010/09/15(水) 23:04:45ID:???0185nobodyさん
2010/09/15(水) 23:10:38ID:???0186nobodyさん
2010/09/15(水) 23:31:49ID:???0187nobodyさん
2010/09/15(水) 23:45:34ID:???0188nobodyさん
2010/09/16(木) 01:49:39ID:???blessされたリファレンスを返すからであって、他言語のように"new"自体は
言語構造でもなければ組込みの関数とかでもないでしょう。
0189nobodyさん
2010/09/16(木) 09:18:22ID:???0190nobodyさん
2010/09/16(木) 10:28:19ID:???0191nobodyさん
2010/09/16(木) 10:35:40ID:???0192nobodyさん
2010/09/16(木) 11:29:04ID:???回線の負荷を5分間隔で
調べたいのですが、
方法はありますでしょうか?
当方、光でインターネットに
つながっています。
0193nobodyさん
2010/09/16(木) 11:36:36ID:???0194nobodyさん
2010/09/16(木) 11:43:36ID:???0195nobodyさん
2010/09/16(木) 12:05:16ID:???もう少し自分の頭で考えてちゃんと作ってみてどうしてもわからない
ところをピンポイントで聞かないとこういうとこでは役に立つ回答は
つきにくい。
でもそんなのいろいろあるから自前で作ることにこだわらず拾って
きて使えばいいんじゃね? mrtgとかmuninとかcactiとか。
0196nobodyさん
2010/09/16(木) 12:12:05ID:???漠然としすぎていました。
失礼しました。
現在、MRTGのグラフで「回線の負荷」と称して、下記の方法でトレンドを見ています。
・自プロバイダ(@nifty)のHPスペースに1MBのファイルのアップロード・ダウンロードを
行い、その所要時間をMRTGでグラフ化しています。
で、この方法が正しい考えなのか否か、また、こういう良い方法があるよ
という参考意見がありましたら、レスをお願いします。
0197nobodyさん
2010/09/16(木) 12:18:01ID:???案内はできんけど。
考え方的にはわからんでもないな。量的に許される程度なのかどうかは
個別の事情だし。
0198nobodyさん
2010/09/16(木) 16:37:33ID:???mrtg には通信した容量とかも記録されてるから (しかも時間ごとに) そのログを活用したほうがいいかと
とりあえず mrtg のログ漁りから始めた方よいかと
定期的にまわすなら cron (Windows 鯖ならタスク) でチェックするスクリプトを走らせればいいかと思う
どう〜しても何をやっていいのか分からなければ
http://hibari.2ch.net/test/read.cgi/unix/1126361848/l200
へ
0199nobodyさん
2010/09/17(金) 00:19:38ID:???レスありがとうございます。
そうなんですよね。
前は10Mでトレンドを取っていたのですが、
本末転倒なので、1Mに変えた次第です。
0200nobodyさん
2010/09/17(金) 08:57:37ID:???方法はないんだよな。途中の通信業者からトラフィック測定データを
もらえるようなコネでもない限り。
0201nobodyさん
2010/09/17(金) 09:05:32ID:???0202192
2010/09/17(金) 13:56:22ID:???@niftyさん、なにか変えたのでしょうか。。。
ということで、tracerouteも含め別の方法を考えてみます。
0203nifty
2010/09/17(金) 14:19:02ID:???0204perl初心者
2010/09/17(金) 14:19:08ID:vsIN50JT添付ファイルの処理を加える前は正常に動作していました。
他のページで同じ質問にあぽーんでかたずけられてましたが、どなたかご教示頂ければ幸いです。
よろしくお願い致します。
※環境(参考情報)
CentOS Apache
perl5.8.8
use Net::SMTP;
use Encode;
use MIME::Entity;
use CGI;
送信フォームのエンコード:utf8
cgiのエンコード:なぜかiso-2022-jp
0205nobodyさん
2010/09/17(金) 14:37:51ID:???今からやる場合、どれがいいですかね?
用途はコマンドラインから動かすのとCGI利用です
0206nobodyさん
2010/09/17(金) 15:41:49ID:???ソース見てないので何ともいえんが
MIME::Entityにファイルデータが渡ってない・・に1票
おいらなりの流れ
1.添付データは、useCGI;のVars()でなく、param()で取得
2.取得したデータをmimeエンコード
3.メールヘッダ&本文をテキストベースで整形して
4.本文をboundaryでブロック分け
5.boundaryの1ブロック目は本文を挿入
6.2つめのboundaryブロックは、mimeタイプ&ファイル名を宣言して、
3)でエンコードしたテキストを貼付け
7.出来上がったメールをsendmalに投げて送信
>>205
onRailが最も流行ってるって観点からだとRubyかな
Perlは一通りなんでもできるけど、
Perl6も出たばっかだしニーズ的に今後どうなるかわからん。
勉強する環境で考えると日本語の教材も多くサンプルも多いperlになる。
PHPも同じこといえる
どっちもレガシーになりつつあるけどね。
0207perl初心者
2010/09/17(金) 15:49:22ID:vsIN50JTMIME::Body::File->open FileName.jpg: No such file or directory at /usr/lib/perl5/site_perl/5.8.8/MIME/Body.pm line 435.,
referer: http://localhost/******/****/form_mail.html
0208nobodyさん
2010/09/17(金) 16:09:32ID:???添付ファイルを一旦サーバー上に保存せんとダメ
だから
open FileName.jpg: No such file になる
メール送信後に削除ね。
0209nobodyさん
2010/09/17(金) 16:14:59ID:???スクリプト2行目に
use CGI::Carp qw(fatalsToBrowser);
の1行かいたら、わざわざエラログ見なくて済む。
0210perl初心者
2010/09/17(金) 16:15:05ID:vsIN50JTたしかに我ながらアポーンな痛い愚問でした。
0211nobodyさん
2010/09/17(金) 17:02:13ID:???0212nobodyさん
2010/09/17(金) 17:31:13ID:???コマンドラインでワンライナー限定だとperl最高だと
思う。慣れもあると思うが。
0213nobodyさん
2010/09/17(金) 19:21:26ID:???クソサンプルの餌食になってしまうよ
1つのやり方に色んなやり方あって柔軟だとは思うけど、初心者には迷うだけなんだよねw
0215nobodyさん
2010/09/17(金) 19:40:23ID:???0216nobodyさん
2010/09/17(金) 19:40:52ID:???0218nobodyさん
2010/09/18(土) 14:29:16ID:???my $query = CGI->new;
*in = $query->Vars();
って、たった2行で書くようになってるけど、
昔みたいに、
if ($ENV{'REQUEST_METHOD'} eq "POST") {
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
@pairs = split(/&/,$buffer);
for $pair (@pairs) {
($name, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ s/\t//g;
$in{$name} = $value;
}
} else {
$buffer = $ENV{'QUERY_STRING'};
@pairs = split(/&/,$buffer);
for $pair (@pairs) {
($name, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ s/\t//g;
$in{$name} = $value;
}
}
って書いたほうが、
素人からは何やってるかが書かれている分、良いように思う。
0219nobodyさん
2010/09/18(土) 17:41:29ID:???0220nobodyさん
2010/09/18(土) 17:57:39ID:???ブラックボックスでおk
0221nobodyさん
2010/09/18(土) 23:52:38ID:???0222nobodyさん
2010/09/19(日) 15:20:57ID:???0223nobodyさん
2010/09/19(日) 16:24:14ID:???悟りが啓けるだろ。
0224nobodyさん
2010/09/19(日) 17:09:11ID:???あらゆるプロジェクトを書き直すのか。ご苦労さんってこった。
0225nobodyさん
2010/09/19(日) 23:22:09ID:ND7IF1JXmy $query = CGI->new;
*in = $query->Vars();
の二行をわかりやすく説明してくれたらどんなに感謝することか。(;´Д`)
0226nobodyさん
2010/09/20(月) 01:01:04ID:???http://search.cpan.org/dist/CGI.pm/lib/CGI.pm#FETCHING_THE_PARAMETER_LIST_AS_A_HASH:
http://perldoc.jp/docs/modules/CGI-3.49/CGI.pod
二行目は真似せず素直に %in = $query->Vars; とした方がいい。
0227nobodyさん
2010/09/20(月) 12:16:11ID:???1行になったw
0228nobodyさん
2010/09/20(月) 12:19:01ID:???0229nobodyさん
2010/09/20(月) 12:30:44ID:???それこそソース嫁。
0230nobodyさん
2010/09/20(月) 12:33:54ID:???プロジェクト書き直すのにお金が発生するって前提だと
ある意味、悪いことではないかも
新言語がリリース→新言語でソフト開発→普及する→追加機能のニーズ
→車輪の再開発→開発案ネタ切れ→仕事がなくなる→誰にも見向きされなくなる
→ちょっと使いやすくした新言語をリリース→新言語でソフト開発→普及する
→追加機能のニーズ→車輪の再開発→開発案ネタ切れ→仕事がなくなる
→誰にも見向きされなくなる
プログラミング市場とは、ちょうどウィルスとウィルス対策ソフトの関係のように
イタチゴッコな構造でなければ繁栄しない。
0231nobodyさん
2010/09/20(月) 12:41:55ID:???の「->」の意味ってそもそもどんな意味?
WorkAをWorkBに任せる?
それとも
オブジェクト指向的に
@List.WorkA.WorkB;
ってこと?
0232nobodyさん
2010/09/20(月) 13:15:25ID:???0234nobodyさん
2010/09/20(月) 22:53:46ID:???0235nobodyさん
2010/09/21(火) 05:32:11ID:???workBはリストを返すので代入する。
0236nobodyさん
2010/09/21(火) 08:10:37ID:???http://perldoc.perl.org/perlop.html#The-Arrow-Operator
http://perldoc.jp/docs/perl/5.12.1/perlop.pod
a. 右辺が [Num] なら左辺を配列リファレンスと看做し、添え字 Num の値を返す。
右辺が {Key} なら左辺をハッシュリファレンスと看做し、キー Key の値を返す。
右辺が (Args) なら左辺をコードリファレンスと看做し、Args を渡して呼び出す。
my $ref = bless [qw( foo bar baz )], 'Foo';
print $ref->[1]; # bar
print { a => 'Foo', b => 'Bar', c => 'Baz' }->{'b'}; # Bar
sub { print join '-', @_ } -> (0..2, 'a'..'c'); # 0-1-2-a-b-c
b. 左辺がクラス(パッケージ)名かそれを収めたスカラー変数なら、右辺にはそのクラス
から辿れるサブルーチン名かそれを収めたスカラー変数、又はコードリファレンスを
収めたスカラー変数を置ける。この場合、右辺のサブルーチンには左辺が第1引数と
して渡される。他の引数は (...) を続ける事で渡せる。
sub Foo::foo { print map("[$_]", @_), "\n" }
my $bar = sub { print 'Bar:', map("[$_]", @_), "\n" }; # パッケージに依存しない
my($Baz, $baz) = ('Foo', 'foo');
Foo->foo, $Baz->foo, Foo->$baz; # [Foo]\n[Foo]\n[Foo]\n
Foo->foo('quux'), $Baz->$baz('quux'); # [Foo][quux]\n[Foo][quux]\n
Foo->$bar, $Baz->$bar('quux'); # Bar:[Foo]\nBar:[Foo][quux]\n
c. 左辺が bless されたリファレンスなら、bless されたクラスを元に b. 同様の動作
をする。第1引数にはクラス名でなくリファレンス自身が渡される。
$ref->$baz('quux'); # [Foo=ARRAY(0xhhhhhh)][quux]
0237231
2010/09/21(火) 10:22:02ID:???なるほど、ありがと!
ドキュメントあったのね。
グーグルで「perl ->」で検索できなかったら
ドキュメントが探せないってのは痛いなぁ。
googleは、「->」の文字列が無視されてしまう。
0238nobodyさん
2010/09/21(火) 18:44:47ID:???0239nobodyさん
2010/09/21(火) 19:16:06ID:???どっちかに載ってる傾向があるような気がする。
0240nobodyさん
2010/09/22(水) 01:11:34ID:AC22vKYSindex.htmlのプルダウンメニューで「あ」を選択すると、value="01"がchoice.cgiに渡されて
http://www.ほげ.jp/a/ に飛ぶようにしたい。
2: それでこんな風にやってみたが・・・
index.htmlとchoice.cgiは下に記載。
3: こんなエラーが出て上手く行かなかった。
choice.cgiの数値を$page08ぐらいまで作ると500 Internal Server Errorを吐き出して停止する。
これを$page08、$page09と数値を増やしても、しっかり動くようにできませんか?
index.html
<form action="choice.cgi" method="GET">
<select name="choice" onchange="this.form.submit();" size="10" style="width: 200px;">
<option value="01">あ</option>
<option value="02">い</option>
<option value="03">う</option>
<option value="04">え</option>
<option value="05">お</option>
<option value="06">か</option>
<option value="07">き</option>
<option value="08">く</option>
<option value="09">け</option>
<option value="10">こ</option>
<略>
</select>
</form>
0241nobodyさん
2010/09/22(水) 01:12:47ID:AC22vKYS#!/usr/bin/perl
$page01 = "http://www.ほげ.jp/a/";
$page02 = "http://www.ほげ.jp/i/";
$page03 = "http://www.ほげ.jp/u/";
$page04 = "http://www.ほげ.jp/e/";
$page05 = "http://www.ほげ.jp/o/";
$page06 = "http://www.ほげ.jp/ka/";
$page07 = "http://www.ほげ.jp/ki/";
$page08 = "http://www.ほげ.jp/ku/";
$page09 = "http://www.ほげ.jp/ke/";
$page10 = "http://www.ほげ.jp/ko/";
<略>
$jump = "http://www.ほげ.jp/";#変な値が入力された時に飛ぶURL
$query = $ENV{"QUERY_STRING"};
($key,$value)= split(/=/,$query);
if($value == 01) {$jump = $page01;}
elsif($value == 02) {$jump = $page02;}
elsif($value == 03) {$jump = $page03;}
elsif($value == 04) {$jump = $page04;}
elsif($value == 05) {$jump = $page05;}
elsif($value == 06) {$jump = $page06;}
elsif($value == 07) {$jump = $page07;}
elsif($value == 08) {$jump = $page08;}
elsif($value == 09) {$jump = $page09;}
elsif($value == 10) {$jump = $page10;}
<略>
print "location: $jump\n\n";
exit;
0242nobodyさん
2010/09/22(水) 01:39:35ID:???0243nobodyさん
2010/09/22(水) 01:39:54ID:???> $page08ぐらいまで作ると500 Internal Server Errorを吐き出して停止する。
それは君が書き損なっているからだ。
下のように2行付け加えて、出てくるエラーメッセージを読みなさいな。
#!/usr/bin/perl
↓
#!/usr/bin/perl
use CGI::Carp qw(fatalsToBrowser);
use warnings;
これらの説明は以下。
http://search.cpan.org/dist/CGI.pm/lib/CGI/Carp.pm
http://perldoc.jp/docs/modules/CGI-2.89/CGI/Carp.pod
http://perldoc.perl.org/warnings.html
http://perldoc.jp/docs/perl/5.8.1/warnings.pod
0244nobodyさん
2010/09/22(水) 01:45:55ID:???書き損なうも何もここで Illegal octal digit 出るだろ
0245nobodyさん
2010/09/22(水) 02:51:53ID:???数字で扱うならアタマに 0 は付けないように。
でも文字列として扱った方が何かと楽なので、
elsif($val eq '08')〜
とした方が良いかと
0246nobodyさん
2010/09/22(水) 02:55:05ID:???elsif($value eq '02'){ $jump = $page02; }
elsif($value eq '03'){ $jump = $page03; }
elsif($value eq '04'){ $jump = $page04; }
elsif($value eq '05'){ $jump = $page05; }
elsif($value eq '06'){ $jump = $page06; }
elsif($value eq '07'){ $jump = $page07; }
elsif($value eq '08'){ $jump = $page08; }
elsif($value eq '09'){ $jump = $page09; }
elsif($value eq '10'){ $jump = $page10; }
<略>
print "location: $jump\n\n";
exit;
0247nobodyさん
2010/09/22(水) 03:15:38ID:???これらをまとめて取り出すための特殊変数とかありますか。
「perl 特殊変数」でぐぐっていくつかページを読んだのですが、
それらしい特殊変数がみつかりませんでした。
0248nobodyさん
2010/09/22(水) 03:34:18ID:???use warnings;
my $str = '今日は暑かったかもしれない。 しかし今日と違って明日は寒いようだ。 今日はお買い物に行った。';
my @test = $str =~ /今日.*?っ/gi;
print join("\n", @test);
0249nobodyさん
2010/09/22(水) 03:44:24ID:???ありがとうございます。
while文との組み合わせでも動くでしょうか。
ためしたとろ、無限ループになるようです。
my @x;
while (@x = $str =~ /¥w+/g) { print Dumper(¥@x); } # 無限ループ?
0250nobodyさん
2010/09/22(水) 04:34:43ID:???if( my @x = $str =~ /\w+/g ){
print Dumper( \@x );
}
}
0251nobodyさん
2010/09/22(水) 05:38:12ID:???use warnings;
my $str = '今日は暑かったかもしれない。 しかし今日と違って明日は寒いようだ。 今日はお買い物に行った。';
my @test = $str =~ /今日.*?っ/gi;
print "文字列:$str\n";
print "_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/\n";
print "foreach を使う場合の一例\n";
foreach my $regex (@test){
print "取得したのは : $regex\n";
}
print "_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/\n";
print "while を使う場合の一例 \n";
my $str_bak = $str; # 削除しながら取得するため、バックアップをとる
while($str =~ s/(今日.*?っ)//){
print "取得したのは : $1\n";
}
$str = $str_bak; # バックアップを戻す
0252nobodyさん
2010/09/22(水) 05:39:07ID:???文字列:今日は暑かったかもしれない。 しかし今日と違って明日は寒いようだ。 今日はお買い物に行った。
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
foreach を使う場合の一例
取得したのは : 今日は暑かっ
取得したのは : 今日と違っ
取得したのは : 今日はお買い物に行っ
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
while を使う場合の一例
取得したのは : 今日は暑かっ
取得したのは : 今日と違っ
取得したのは : 今日はお買い物に行っ
0254240
2010/09/22(水) 20:22:03ID:???08に特別な意味があることを勉強できました。
感謝です。
0255nobodyさん
2010/09/23(木) 02:39:42ID:???my @r = split /[\s,]+/, $s;
my @f = split /([\s,]+)/, $s;
@rと@fの結果が一致しないのは何故ですか?m//において()は特殊変数$1,$2...への記憶でしかないのですよね?
0256nobodyさん
2010/09/23(木) 02:51:47ID:???PATTERN に括弧が含まれていると、デリミタ内の部分文字列にマッチするものも、 リスト要素に含まれるようになります。
split(/([,-])/, "1-10,20", 3);
は、以下のリスト値を生成します。
(1, '-', 10, ',', 20)
0258nobodyさん
2010/09/23(木) 22:06:19ID:???出力が長い場合、ターミナルのバックログを見ているんですが、lessが使いたいです
0260nobodyさん
2010/09/27(月) 11:10:54ID:hIL0AOHQ1秒間に6回のアクセスをし、
アクセスする度に違ったHPのURLをリンク元として記録を残していく同一アクセス者がいるんだよ。
以前から見慣れないリンク元URLが見受けられるようになったんだけど、
見に行くとリンクなんてしてなにわけ。おかしいでしょ?
これは何かあるんじゃないかな。
思うに、SEO業者でリンク元URLを残していくことで、、、
0261nobodyさん
2010/09/27(月) 11:55:17ID:???0262nobodyさん
2010/09/27(月) 11:56:15ID:???0263nobodyさん
2010/09/27(月) 14:22:26ID:o+RpwStb何の役にもたたない
0265nobodyさん
2010/09/28(火) 02:16:52ID:???真面目に質問です。
トーナメント表を作りたくてPHPの勉強始めました。
ここが目標です。
http://hanamachi.com/tnmt/i212.html
1.ブラウザから参加者登録
2.点数を記入して、勝ち上がりを更新する
参考になる考え方、sampleなどご指導下さい。
よろしくお願いします。
0266nobodyさん
2010/09/28(火) 04:11:04ID:5eMRq53ysystem("mkdir ~/foo/bar");
}
linux で ~/foo/bar が存在しないなら、そのディレクトリを作成する
ということをしたいのですが、-d "~/foo/bar" が正しく判定されません。
~/foo/bar ディレクトリがあるのに、無いと判定されてしまいます。
-d "/home/andy/foo/bar" というように絶対パスなら正しく判定されます。
-d "~/foo/bar" の場合何がまずいのでしょうか?
0268nobodyさん
2010/09/28(火) 04:36:14ID:???なんかようわからんけど -d "$ENV{HOME}/foo/bar" なら動いたよ
想像だけどPerl自体はチルダを展開しなくて、systemなんかでシェルが処理するときは展開するんじゃないか?
0269nobodyさん
2010/09/28(火) 07:01:19ID:???ありがとうございます
多分>>268さんのおっしゃる通りなんでしょうね
「初めてのperl」にも chdir の説明のところですが「チルダがホームディレクトリを指すのは
シェルの機能だからOSを直接呼び出すPerlでは使えないよ」と書いてあります
でもなぜ system 関数では使えるの?という疑問が出るのですが
はっきりした事はググっても見つかりませんでした
0270nobodyさん
2010/09/28(火) 10:21:28ID:???いやぐぐるまでもなくマニュアルに書いてある。
ttp://perldoc.jp/docs/perl/5.10.0/perlfunc.pod より:
# system LIST system shell
# system PROGRAM LIST
exec LIST とほとんど同じですが、まず fork を行ない、親プロセスではチャイルドプロセスが終了するのを wait します。
exec の項で述べたように、引数の処理は、引数の数によって異なることに注意してください。 LIST に複数の引数がある場合、
または LIST が複数の要素からなる配列の場合、リストの最初の要素で与えられるプログラムを、リストの残りの要素を引数
として起動します。スカラの引数が一つだけの場合、引数はシェルのメタ文字をチェックされ、もしあればパーズのために引数
全体がシステムコマンドシェル (これは Unix プラットフォームでは /bin/sh -c ですが、他のプラットフォームでは異なります)
に渡されます。シェルのメタ文字がなかった場合、引数は単語に分解されて直接 execvp に渡されます。この方がより効率的です。
「スカラの引数が一つだけの場合〜」のところをよく読め。この説明でわからなければ
勉強が足りないのでがんばれ。
0272nobodyさん
2010/09/29(水) 14:40:47ID:LPXumyyoの否定は
if(!-f "hoge"){}
でしょうか?
if( !(-f "hoge")){}
でしょうか?
0273nobodyさん
2010/09/29(水) 15:02:32ID:???0275nobodyさん
2010/09/29(水) 15:30:59ID:???0276nobodyさん
2010/09/29(水) 15:55:23ID:???my $cgi = new CGI;
my $cgi = CGI->new;
上述の二つはどう違うのでしょうか?
0277nobodyさん
2010/09/29(水) 16:06:44ID:???my $cgi = CGI::new('CGI');
とも書けます。まず使わないけど。
0279nobodyさん
2010/09/29(水) 16:46:42ID:???んでもってそれは>>277のシンタックスシュガーであると。
0280nobodyさん
2010/09/29(水) 17:11:05ID:???0281nobodyさん
2010/09/29(水) 17:12:15ID:???0282nobodyさん
2010/09/29(水) 19:18:53ID:???flock( DATA, 2);
$cnt = <DATA>;
close( DATA);
chomp( $cnt);
$cnt++;
open( DATA, ">", $logAll);
flock( DATA, 2);
print DATA $cnt;
close( DATA);
このように書くと、ログがリセットされてしまうことがあります。
どのようにかけばいいでしょうか?
0283nobodyさん
2010/09/29(水) 19:37:55ID:???flock DATA, 2;
$cnt = <DATA>;
chomp $cnt
$cnt ++
seek DATA, 0, 0;
print DATA $cnt
truncate DATA, tell(DATA);
close DATA;
# chompする必要あるの?
0284nobodyさん
2010/09/29(水) 19:40:08ID:???flockが有効な間に読んで1増やして書くまでやらないと
ロックする意味がない
'>'で開くと開いた瞬間にファイルが空にされるので、
そのあとでflockしても手遅れ(ロックしてないうちに
ファイルを壊したことになる)
use Fcntl qw(:flock :seek);
open( DATA, "+<", $logAll);
flock( DATA, LOCK_EX);
$cnt = <DATA>;
chomp( $cnt);
$cnt++;
seek(DATA, 0, SEEK_SET);
print DATA $cnt;
close( DATA);
0285nobodyさん
2010/09/29(水) 19:43:15ID:???0286282
2010/09/29(水) 21:14:18ID:???リセットされないようになりました。
教えていただいたコードの中でわからないことがあるので、
もう一度質問させてください。
seekについてしらべてみたのですが、どのような動作をするのでしょうか?
ポインタを移動させるということはわかったのですが、そのポインタが先頭に行くということは
既存の文字の前にインサートすることにはならないのでしょうか?
また、>>283さんのtruncateはファイルサイズを変更しているようですが、
どのようないみがあるのでしょうか?
お手数をおかけしておりますが、宜しくお願いいたします。
0287nobodyさん
2010/09/29(水) 21:26:51ID:???インサートじゃなくて上書き。
truncateしないと新たに書いた文字列がもとのより短いときに
問題になる。たとえば100を99にしようとしても990になっちゃう
みたいな。今回は1ずつ増やすので桁が減ることがないから
truncateしなくても大丈夫なので284はさぼったんだと思うけど
一般的には必要。
0288282
2010/09/29(水) 21:31:14ID:LPXumyyoありがとうございます。
ポインタはC言語と同じ動きをするんですね。
0289nobodyさん
2010/09/29(水) 22:34:03ID:???0290nobodyさん
2010/09/30(木) 00:16:07ID:???0291nobodyさん
2010/10/01(金) 01:36:17ID:qWU05yPjこの度、クレジットカード決済を同CGIに導入することになったんだが、
接続とデータの渡しに更なる知識と技術が必要みたいなんだな。
リファレンスっていうのがよくわからない。
どなたか、分かりやすく説明していただけませんか?
0293nobodyさん
2010/10/01(金) 01:49:05ID:qWU05yPjどうして?
どういうこと?
SSLは導入してるよ?
0294nobodyさん
2010/10/01(金) 06:38:46ID:???金を扱わせるのは怖いって話だろ。SSL使ってりゃいいって
もんじゃない。
0295nobodyさん
2010/10/01(金) 13:02:48ID:???0297nobodyさん
2010/10/01(金) 14:11:15ID:???損害賠償請求でもされないと、自分のやっていることの
問題がわからないタイプの人
0298nobodyさん
2010/10/01(金) 16:13:17ID:???そもそもクレジットカード決算とリファレンス直接関係ないし
WEBでビジネスやろうと思うなら少なくともCSRF・XSS・SQLインジェクションくらいは理解した上で質問をしろ
熟練して、リスクとコストを見比べてそれでも自作でやろうと思うならそれでもいいが、
どんなリスクがあってそれがどれほどの損害を生むかを理解していないうちから人の金を扱うのは
無責任にもほどがある
0299nobodyさん
2010/10/01(金) 16:27:35ID:qvat8ps4それは全く違うと思うのだが。
クレジットカード決済代行業者の存在は知ってる?
上手く繋げられれば決してありえない話ではないと思うのだが。
0300nobodyさん
2010/10/01(金) 16:35:07ID:???0301nobodyさん
2010/10/01(金) 16:37:13ID:???ということだよ。
決済代行につなげて出来た出来たじゃすまないんだよね。
0302nobodyさん
2010/10/01(金) 16:39:17ID:???ってことだよw
>>クレジットカード決済代行業者の存在は知ってる?
たぶんみんな知ってる
あまり、自分だけ知ってるんだぜ?的な発言は敵を増やすだけで良質な回答は増えないと思う。
質問したなら、回答を得るまで下手にかつ積極的に動けないかねぇ
まぁ手数料覚悟で自分のカードでテストするのも手だけど、
とりま paypal つこーとけ
あそこはカード決済がテストで出来たと思った
0303nobodyさん
2010/10/01(金) 16:43:40ID:qvat8ps4代行業者の利用案内ではCGIからの繋げ方が解説されていて、
努力すれば可能なんだがな。
>自分だけ知ってるんだぜ
回答はありがたいが、どの程度の前提なのかは当然わからないわけで、
技術者は兎角視野が狭まりがち。
プログラマーでも決済代行業者知らないことはあり得るんじゃないか?
0304nobodyさん
2010/10/01(金) 16:46:53ID:qvat8ps4渡すデータってどんなデータだと思う?
カード番号等は代行業者のページに入ってから入力するから、
ショップ側はタッチしないシステムになっている。
なんら問題はないと思うけどな。
0305nobodyさん
2010/10/01(金) 17:07:01ID:???業者によるぞ
決算代行と単に決済システムを置いてくれてる会社がある
代行で簡単なところはデータ渡すだけでいいけど、決済システムを置いてくれてるだけなら
自分でデータを加工して指定の方法に従って渡さないといけない。
何度も作ったことがあるけど、結構めんどくさい。
業者のシステムの仕様のマニュアルから読まないといけないから。
完全な代行業者ならデータすら渡さずに、代行業者のサイトに遷移させるだけだから、
CGIを導入するって言った時点で前社ではないんじゃないの?
しらんけど
0306nobodyさん
2010/10/01(金) 17:17:03ID:qvat8ps4>代行で簡単なところはデータ渡すだけでいいけど、決済システムを置いてくれてるだけなら
>自分でデータを加工して指定の方法に従って渡さないといけない。
これです。
つまり、商品メニューの表示と支払い合計額の計算、
個人情報の入力と送信はショップが行い、
支払い手続き等の決済は決済代行業者が行う。
ショップは名前と電話番号と決済額を決済代行業者に渡すだけで、
クレジットカード手続きは代行業者ページで行う。
めんどくさいけどギリギリでできそうなところにきている。
クレジットカード番号等の保管をしなくてもいいし、リスクもショップ側は少ない。
なにが問題だろうか。
ところが、リファレンスがわからないんだな。
配列の配列(の配列?)みたいなデータを扱う場合に必要になるっぽいのはわかりかけてるけど、
おそらくここのところがネックになってるものかと。
0307nobodyさん
2010/10/01(金) 17:25:59ID:???0308nobodyさん
2010/10/01(金) 17:31:09ID:qvat8ps4それが、書籍を読むと理解が難しくて。
>配列の配列
つまり、縦列と横列のある表の位置情報の指定ってことですかね。
これはわかるのですが・・・
0309nobodyさん
2010/10/01(金) 17:37:41ID:???似たようなシステム作ったことあるから出来ないって事はないと思う。
でも問題なのは >>298 が言ってるように 動けばいいってだけじゃなくて
『CSRF・XSS・SQLインジェクション』とかの対策をしっかりしないと
みんな不幸になりますよって事だと思う。
0310nobodyさん
2010/10/01(金) 17:43:12ID:qvat8ps4どんな危険があるのかはあまり知らないのかも知れない。
盗聴はSSL使って避けるとして、
他のリスクについては想定していないかも知れない。
>インジェクション等
今検索して知ったけど、
そういう 攻撃 をされた場合は脆いかも知れない。
けど、全世界から繋がっているweb界で、リスクリスクと言われたらきりがないのでは?
顧客情報をネットサーバー上におかないことしかできないよ。
0311nobodyさん
2010/10/01(金) 17:59:48ID:???上記の対策は最低限のことだからキリがないとかの話ではないよ。
対策不足だとレンタルサーバーの他の契約者に迷惑がかかることだってある。
特にカード決済型ショッピングカートなんていうエンドユーザーのお金に関わることなら
リスクは限りなく少なくしていかないと・・・
下手するとショップ側の信頼ガタ落ちだよ。
0312nobodyさん
2010/10/01(金) 18:05:04ID:qvat8ps4これ以上、どうしろと?
0313nobodyさん
2010/10/01(金) 18:07:21ID:???不足だから最低でも上記の対策をしようよw
0314nobodyさん
2010/10/01(金) 18:11:22ID:qvat8ps4これで何が不足?他にどういう対策法がある?
0315nobodyさん
2010/10/01(金) 18:11:43ID:???それ矛盾してるよ
> つまり、商品メニューの表示と支払い合計額の計算、
> 個人情報の入力と送信はショップが行い、
> 支払い手続き等の決済は決済代行業者が行う。
商品の表示とか計算を代行業者がやるのに
> ショップは名前と電話番号と決済額を決済代行業者に渡すだけで、
> クレジットカード手続きは代行業者ページで行う。
なぜ、決済額を渡す必要があるの?
マニュアルを読み直すか、有償でもサポートもとめたほうがいいよ。
もし、決済額を渡す必要があるのであれば、今の知識では計算間違えとかの
リスクが大きいと思う。
0316nobodyさん
2010/10/01(金) 18:16:49ID:qvat8ps4いやいやw 貴殿の言ってるのはレンタルショッピングカートのことだよ。
私が言ってるのはクレジットカード決済代行業者ね。両者は違う。
前者は、商品とその情報を登録すればあとはお任せ(?)
後者は、諸決済の中のクレジットカード決済(コンビニも)を代行してもらうだけ。
既にカートは自作のCGIでやってまして、
これからコンビニ・クレジットカード決済を導入するんです。
0317nobodyさん
2010/10/01(金) 18:20:12ID:???0318313
2010/10/01(金) 18:20:47ID:???上記の対策って言うのは、『CSRF・XSS・SQLインジェクション』対策ね。
それ以外にどんなリスクがあるかを、常にアンテナ張って調べるぐらいの探求心が必要だよ。
0319nobodyさん
2010/10/01(金) 18:24:01ID:qvat8ps4その インジェクション等は検索してざっと読んだけど、
できる対策といったらアクセス制限くらいではなかろうか?それと、顧客データのサーバー非保管。
ネット上に個人情報置かないこと。
通信ではSSL。
決済では代行業者。
このほかにどんな対策がある?
なにかこう・・・
0320nobodyさん
2010/10/01(金) 18:25:17ID:???1回でも誤った操作したり(多重私とか)、金額を間違ったりしたら、契約者に
損害賠償があるぞ。
信販会社は誤った請求させられたらおしまいだからな。
0322313
2010/10/01(金) 18:31:51ID:???しっかり読め。今の君が数分読んだだけでは1%も理解できてはいない。
> このほかにどんな対策がある?
『このショッピングカートは、リスクに関して無知なプログラマによって制作させているので怖い人は利用しないでください』
っていう文言を入れろ
0323nobodyさん
2010/10/01(金) 18:38:05ID:iC/l9piS今はまだ本契約はしていない。
実際に利用できるか、動かせるかのテスト期間。
けど、ほぼ間違いないんじゃないかな。
既にクレカ決済無しのネット取引経歴が何年もあるのね。
よって、誤送信の心配はほとんどしていない。
でも、請求額が違ったとしてもそれは代行業者の責任ではないでしょ。基本的に。
もちろん、個別に調べてみないとわからないけど。
それに、クレカ決済が手軽に利用できるようにするのが代行業者の仕事でもある。
ショップが利用しやすいようなサービスを追及してるはず。
>>321
ちょっとわからないね。
なにかこう、あまり知られていない言葉を言って自分の知識の広さ深さをアピールしてるような感触もしている。
SLLと決済代行業者利用のほかにどう対策しろと?
アクセス制限は既にしている。
顧客個人データはサーバー上に残さないのもやっている。
他は?
0324nobodyさん
2010/10/01(金) 18:39:43ID:???自分の腕に相当自身があるようだし、話を聞こうともしてないんだから
俺みたいに裁判沙汰になって初めて後悔するタイプでしょ
一回そういう目に逢えば、嫌でも身にしみる
そういう俺は、基本的に金銭を扱うコードはトラウマで書けなくなった
0325nobodyさん
2010/10/01(金) 18:39:47ID:iC/l9piS君はどんだけその リスク とやらを広く深く知っているのかな。
じゃあ、既存の周囲のショップは何をどこまで実際にやっているか。
SSLと決済代行orカートレンタルくらいではないか。
どうしてこれ以上を?
0326nobodyさん
2010/10/01(金) 18:45:03ID:???こんなやつのために巻き込まれたくもないし、
こんなやつのシステムを使う被害者を増やしたいとも思わないな。
0327nobodyさん
2010/10/01(金) 18:45:46ID:iC/l9piS本当にわかってるの?
0328nobodyさん
2010/10/01(金) 18:47:33ID:iC/l9piS単に深い知識があるだけ?いわゆるヲタク?
ちなみに、自分のサイトではどう対策しているの?
0329nobodyさん
2010/10/01(金) 18:48:54ID:???出直してください
0330nobodyさん
2010/10/01(金) 18:54:18ID:iC/l9piSそのレスでどうして納得できる?
SSL+レンタルカートor決済代行業者 で不足だとか言われたら、
ほとんどのショップがセキュリティー対策不足ってことにならないか?
確かに、それもまたそうっぽいけどね。
対策案が言えないんじゃ単なる因縁付けだよ。
重箱の隅をつつく行為だよ。
そんなのにつきあっていたらいくら経費かかることやら。
その方面の業者を太らせるだけ。違うか?
0331nobodyさん
2010/10/01(金) 18:59:27ID:iC/l9piSショップに非はないでしょ。
これ、わからない?
0332nobodyさん
2010/10/01(金) 19:00:26ID:???親切な俺が一つだけアドバイスを上げるとすると
SSL使ってようが、決済代行使ってようが、
そのSSL通信の中を通って、代行業者に不正な値が流れたらどうする?
不正な値を流す方法は、いっぱいアルファベットが連続したやつ。
今まで連呼してるからわかるでしょ?
今までうまくいってるからって安心してるようだけど、その今までは
代行決済がなかったから誰も相手にしてなかっただけ。
クレジットカードとか扱いだすとそのカード番号を抜くためとか、不
正請求を起こすために狙われる。
だがこれは、お前は被害者じゃなくて加害者になる。リスクがあるの
に、そのリスク対策をしていなかったという責任で加害者。
あと、>>323の
「請求額が違ったとしてもそれは代行業者の責任ではないでしょ。」
これは、もちろん代行業者の責任じゃなくてお前の責任。
だからお前に、信用が傷つけられたという賠償請求がある。
まず、技術より過去の裁判とかを調べたほうがいいよ。
自分がやることのリスクが金銭的にいくらかとか、参考になると思う。
自信があるなら、セキュリティ審査会社とかに君のCGIを調査してもらっ
たらいいよ。
法人なら簡単な検査を無料でやってくれるところがある。
0333nobodyさん
2010/10/01(金) 19:05:54ID:iC/l9piS>SSL使ってようが、決済代行使ってようが、
>そのSSL通信の中を通って、代行業者に不正な値が流れたらどうする?
>不正な値を流す方法は、いっぱいアルファベットが連続したやつ。
>今まで連呼してるからわかるでしょ?
その計算は自作CGIで行うから、そこで間違いがあった場合は責任はショップにあるね。
しかし、計算違いはまず 無い。
よって、不正な値が流れることは 無い。
SSLの意味はわかってる?
>今までうまくいってるからって安心してるようだけど、その今までは
>代行決済がなかったから誰も相手にしてなかっただけ。
意味不明
>クレジットカードとか扱いだすとそのカード番号を抜くためとか、不
>正請求を起こすために狙われる。
SSLの意味や存在意義はわかる?
>だがこれは、お前は被害者じゃなくて加害者になる。リスクがあるの
>に、そのリスク対策をしていなかったという責任で加害者。
SSLの他にどういう対処法がある?と何度も聞いている。
0334nobodyさん
2010/10/01(金) 19:07:32ID:???親切だからもう一つアドバイス
>SSL+レンタルカートor決済代行 でもし情報漏洩等が起きたら、それはSSLまたはレンタルカートor決済代行の責任だよ。
>ショップに非はないでしょ。
完全にショップ側に非がある。
SSLは通信を暗号化するのであって、通信中以外に漏れた内容には関知
しない。アルファベットのやつは通信中に漏らす行為じゃない。
あと、SSLには契約するときに補償額が決まってるから、裁判で賠償請
求があったとしても、その補償額以外の補償はしてくれない。
安いSSLだったら、1万円以下の補償額。
決済代行業者も流れてきた情報に従って決済をするだけだから、その情
報を流したショップに非がある。
このフローがわかってないようなら、プログラムというものがどう動い
てるかもわかってないから、本気で勉強しなおした方がいいと思うよ。
Perlならオライリーの入門書を3冊買えばいい。
0335nobodyさん
2010/10/01(金) 19:07:59ID:iC/l9piS>信用が傷つけられたという賠償請求がある。
この点は確認しておくよ。
しかし、(ry
>セキュリティ審査会社
そうなんだ?
この話は有難い。御礼。
0336nobodyさん
2010/10/01(金) 19:08:13ID:???0337334
2010/10/01(金) 19:09:08ID:???SSLがどういうものかもわかってないみたい。
0338nobodyさん
2010/10/01(金) 19:11:08ID:iC/l9piS情報がどこで漏洩したか確定すべきという話は無しでその結論に帰結するのか?
ショップから漏れたならショップの責任だろうが、
代行業者から漏れたなら当然、代行業者の責任。
君はちょっと先走ってるよ。
0339nobodyさん
2010/10/01(金) 19:12:54ID:iC/l9piSオライリーは難解で無理。
まあ、クレカ代行業者との本契約では今言われた部分の確認は必ずするよ。
0340nobodyさん
2010/10/01(金) 19:14:07ID:???初耳だ
0341nobodyさん
2010/10/01(金) 19:14:33ID:iC/l9piSそんなとこ。
おかしいか?
0342nobodyさん
2010/10/01(金) 19:15:10ID:???0343nobodyさん
2010/10/01(金) 19:16:08ID:???シングルトンってみんな当たり前のように使ってるのかな?
この前、自作mvcでちょうどショッピングカート作ったんだけどw
シングルトン意識しながら作ったらほとんどシングルトンなんじゃないかと思って・・・
CだってVだって1つ以上のインスタンスは不要な気がする。
俺の設計がイマイチだったのかな
0344nobodyさん
2010/10/01(金) 19:16:18ID:iC/l9piS君のかかわるwebサイトではどう対策しているんだい?
0345334
2010/10/01(金) 19:17:03ID:???>>333
>しかし、計算違いはまず 無い。
君が作ったプログラムが計算間違えをしないでも、XSSなりを使ったら
その計算を狂わすことも、そもそも計算処理を通さないでも決済に流す
ことができるの。(もちろん対策していたら大丈夫。
>SSLの他にどういう対処法がある?と何度も聞いている。
SSLは通信を暗号化するものだから、XSSなりの対策とは無関係。
君が商品を送るときにかぎの付いた箱で送ったとしても、かぎを閉める
前に別の商品に摺りかえられたり、そもそも君じゃない誰かがその箱で
送られたらどうする?
運送(SSL)は安心でも、別の商品が届いたり、自分で送ってないものが
届くでしょ?
何度も言うけど、SSLは通信の暗号かね。
ショッピングしてる最中とか、住所入力したりしてるのは通信じゃない。
>>338
もちろん代行業者で漏れたら、代行業者の責任だよ。
でも、代行業者は君異常の知識を持った人がそろってるよね?
なら、どっちがリスクがあるか考えてみよう。
>>339
オライリーの入門書が難解というレベルなら、今のコードも相当危ないと
思うよ。
0347nobodyさん
2010/10/01(金) 19:22:11ID:???それほどID:iC/l9piSがあほなのか
0348nobodyさん
2010/10/01(金) 19:23:04ID:iC/l9piS>今のコードも相当危ないと
どう危ないんだい?
0349nobodyさん
2010/10/01(金) 19:26:12ID:???釣りじゃなかったら相当やばいぞこいつ。
0350nobodyさん
2010/10/01(金) 19:26:29ID:iC/l9piSこれは、入力にタグやスクリプトを許さないことで避けられるかな?
0351nobodyさん
2010/10/01(金) 19:28:27ID:???これだけ話きかないんなら、審査会社に言われたことも聞かないだろうし。
もうあとは、自分に被害が出て悔い改めるしかない。
0352nobodyさん
2010/10/01(金) 19:29:00ID:???0353nobodyさん
2010/10/01(金) 19:31:40ID:iC/l9piSそんな、すぐに実感なんてできないよ。
ましてや、姿形も経歴も、文字意外に何もわからないんだから。
どういう前提で話してるのかもわからないんだから。
これはわからん?
>>352
レベル高すぎだよ。
あんな難しい本、読む気になれん。
0354nobodyさん
2010/10/01(金) 19:33:45ID:iC/l9piS2ちゃんってSSL使ってないでしょ?ならば非常に危険なはず。
XSS対策はできてるの?
君らの話は理屈ではわからなくはないけど、いまいち実感が持てない。
実感の持てない危険を感じろといわれても困る。
0355nobodyさん
2010/10/01(金) 19:34:29ID:???5.6はさすがにもうターゲットから外していいだろうか。
KENTとか相当古いバージョンもサポートしてるけど、需要あるの?
0356nobodyさん
2010/10/01(金) 19:34:31ID:???0357nobodyさん
2010/10/01(金) 19:35:01ID:iC/l9piS0361355
2010/10/01(金) 19:36:33ID:???ありがとう。
官公庁みたいにパッケージが追加できない環境で、5.6なところって
もうないかな?さすがに5.8に移行してる?
0362nobodyさん
2010/10/01(金) 19:37:55ID:iC/l9piSじゃあきみらレベルのプログラム作れるようになるよ。
君らはどんな環境下でプルグラムを学習したんだい?
相当、専門的にやったんだろうね。
0363nobodyさん
2010/10/01(金) 19:38:04ID:???さがせば5.6使ってるところもあるかもしれないが、実際組むとなったら5.8を基準にして組むのが一番やりやすいと思う
0364nobodyさん
2010/10/01(金) 19:41:37ID:???Perlはなんで標準モジュールにテンプレートいれないの?
Templateじゃなくて、HTML::Templateでいいからマジで入れてほしい。
まぁ、いまさら入れたところで遅いか・・。
ところで、追加で入れれないところで作業するとき、自作でテンプレートシステム作ってる?
あ、HTML::Templateってコンパイル必要なかったっけ?
0365nobodyさん
2010/10/01(金) 19:42:57ID:???0366nobodyさん
2010/10/01(金) 19:46:12ID:???自分も5.8をターゲットにしたいんだけど、他の環境の人は見る機会ないかと思って。
某大手イベンターの自社サーバが5.6だってシステムを作り直したことがあってから、5.6にはトラウマ。
あれから2年たつけどいまだにあそこは、5.6で納品させてるんだろうな・・。
Templateもオプションによってはコンパイル不要じゃなかったでしたっけ。
0367nobodyさん
2010/10/01(金) 19:47:22ID:iC/l9piS0368nobodyさん
2010/10/01(金) 19:49:03ID:???ここによるといらんみたいね。
0369nobodyさん
2010/10/01(金) 19:50:12ID:iC/l9piS語られてることは初心者レベルではないと思うんだが。
自分らの知識能力の自慢かアピール?
0370nobodyさん
2010/10/01(金) 19:50:28ID:???でるの10年後くらい?
0371nobodyさん
2010/10/01(金) 19:50:33ID:???0372nobodyさん
2010/10/01(金) 19:51:50ID:???Smartyが機能多いとは思わないのは、使いこなせてないせい?
SmartyレベルならHTML::Templateじゃないの?
Templateはすごいよ。マジで。
一回使うと、HTML::Templateが使えなくなる。
0373nobodyさん
2010/10/01(金) 19:53:31ID:iC/l9piS自分らの興味関心に出会うと他が見えなくなる性質が感じられる。
SSL+レンタルカートで駄目では、ネットショップなんてもう無理でしょ。
どうやら、複雑高度なことは理解できても、単純明快なことが理解できなくなっちゃったのかな?
0374nobodyさん
2010/10/01(金) 19:55:48ID:???簡単にはそんな直接的な名前は使わせてくれないのに、
Template ToolkitがTemplateを使えたのはその強力さにある。
HTML::Template使ってた時は、PHPプログラマがすらすら書いててしばいてやろう
と思ってたけど、Template使い始めてからはPHPなんてどうでもよくて、
Pythonプログラマをしばくタイミングをうかがってる。
0375371
2010/10/01(金) 19:56:57ID:???あう・・・ そうなのか
{$hoge|html_entity_decode}
みたいな書き方がhtml::templateで出来ないような気がしたり、その他に何点か不便に感じたからsmarty>>html::templateかと思ってた
templateってのもちょっと調べてみます
0376nobodyさん
2010/10/01(金) 19:59:03ID:iC/l9piS参ったね
0377nobodyさん
2010/10/01(金) 20:00:53ID:???HTML::Templateは
<TMPL_VAR ESCAPE=HTML NAME="PARAM">
こんな感じ。
Template Toolkitは
http://www.hakoniwa.net/tt/#filter_etc
こんな感じでSmarty的に使えるよ
0378nobodyさん
2010/10/01(金) 20:01:32ID:???0379nobodyさん
2010/10/01(金) 20:03:42ID:???Perlの勉強を始めたばかりなのですが、
use utf8;
の意味がわかりません。
どのような時に使い、どのようなメリットがあるのでしょうか?
0380nobodyさん
2010/10/01(金) 20:04:49ID:???あれはプログラマ向きであって、デザイナ向きではないよ。
デザイナ向きはTemplateToolkit一択。
HTML::Templateはどういう風に分業したらいいかわからなかった。
0381nobodyさん
2010/10/01(金) 20:05:07ID:???あー ごめん言い方が悪かった
{$hoge|html_entity_decode} みたいに テンプレート内にphp関数まぜたり
{$hoge|nl2br} 改行をbrタグに変えてくれたり
{$smarty.const.SCRIPT} 定数にアクセスできたりするのがsmartyは便利だけど
HTML::Templateは出来ないっぽいから不便だなぁと
0382nobodyさん
2010/10/01(金) 20:06:59ID:???本屋さんにSmartyの本が何冊かあるけど、あれなんなの?
そんなに複雑なの?
TTのマニュアルですら、上のリンクだけなんだが。
0383nobodyさん
2010/10/01(金) 20:11:35ID:???>>1-2
http://perldoc.perl.org/utf8.html
http://perldoc.jp/docs/perl/5.8.1/utf8.pod
0384nobodyさん
2010/10/01(金) 20:11:51ID:???公式サイトのマニュアル見ると上のTTのマニュアルよりは多そうだね。
http://www.smarty.net/manual/ja/
あまり複雑すぎると分業できなくなる気もするけど、smartyはそんなに複雑じゃないと思うよ
0385nobodyさん
2010/10/01(金) 20:12:52ID:iC/l9piS今、その業者のHPをみてるんだけど、
HPを読む限り、とりあえず心配すべきことはないと思う。
今日のみんなはどうやらいろいろと高度な専門知識を持っているようだけど、
なにかおかしいと思う。ヲタ過ぎるっていうのかな?不必要に知識を持っていたり、警戒してるかのような。
初心者スレで平気で高度?な話してるところも非常識だと思うし。
一度会って人間性を見てみたい気も。
0386379
2010/10/01(金) 20:14:18ID:???そういった記事はある程度読みました。
ですが、どのような利点があるかがいまいちわかりません。
例えばutf8を読み込まなくても、プログラム自身はutf8で書けますし、
utf8の文字列も扱えます。
utf8を読み込めばサブルーチン名にutf8な日本語が使えるなどだけなのでしょうか?
0388nobodyさん
2010/10/01(金) 20:17:40ID:???0389nobodyさん
2010/10/01(金) 20:17:57ID:iC/l9piSショップから決済代行業者へ渡すのは金額や商品名や決済方法等の注文情報だけ。
仮に漏れても個人情報は漏れない。
おかしいよ、やっぱり君らは勘違いしているよ。
あるいは、わかっていないよ。
失礼かもしれないけど、気を悪くしないで考えてもらいたい。
0391nobodyさん
2010/10/01(金) 20:25:32ID:???SSLと決済サイトだから安全というレベルの認識だと
たとえば改竄とかされたら無力なんだよね。
穴があったら君のサイトの中で決済サイト使わずに
クレカ入力してよって風に改竄されちゃうかもしれない。
あとはわかるよな。
SSLと決済サイトだから安全なんて思考停止をせずに
隅々まで気を使ってちゃんと書けってこった。
0392nobodyさん
2010/10/01(金) 20:29:38ID:???変数名や関数名に日本語ってあんまり使わないと思うけど、
文字列定数に日本語を書いた場合に、utf8フラグがついた
文字列になるか、ただのバイト列になるかは違うと思うよ。
正規表現とかも。
0393nobodyさん
2010/10/01(金) 20:36:52ID:???書き込みを行っていくのではなく、投稿内容に応じてログへの記述位置が違う
場合、
一度ログを全て読み込み、ファイルを閉じ、書き込み位置をスキャンした後に
書き込み用に開いて、当該個所に追記するというのがいいのでしょうか?
それとも、読み込んでスキャンしている最中も開きっぱなしで書き込みが終わっ
てから閉じるものなのでしょうか?
また、検索の際も
検索を行う該当箇所だけ開き、マッチした記事のID等をひろってから、再度開
きなおしてIDから記事全体を取得するのか、開きっぱなしでマッチした記事を
拾ってから閉じるのでしょうか?
前者だと、書き込みや検索が多い際にファイルへアクセスするプロセスが待つ
時間が短くなると思うのですが、2度開くのでファイルを開くのとメモリに読み
込む時間がかかってしまうと考えています。
後者であれば、ファイルを開くのと読み込むのが一度なのでその時間が短く済
みますが、スキャンしている時間もファイルをロックしているので、プロセス
が待つ時間が長くなってしまうと考えています。
私の考えも含めて間違っている個所があれば、ご指摘いただければと思います。
0394nobodyさん
2010/10/01(金) 20:42:40ID:???> 間違っている個所があれば、ご指摘いただければと思います。
質問するスレを間違えている。
△▲ WebProg 初心者の質問 Part22 ▼▽
http://hibari.2ch.net/test/read.cgi/php/1272872528/
>>1
> Perlのコーディングで困ってる人のスレです。
>
> 【投稿する際の注意】
> 質問するときは内容をよく吟味してから投稿してください。
> 「コマンドの意味がわかんない」とかはマニュアル見ましょう。
> 回答者さんは何でも屋じゃありません。
>
> 1: 自分はこういう事がしたい。
> 2: それでこんな風にやってみたが・・・
> 3: こんなエラーが出て上手く行かなかった。
>
> 最低でも1と3が無いと誰も答えられないよ。
0395nobodyさん
2010/10/01(金) 20:44:08ID:???そのフラグっていうのもよくわからないんですよね・・
http://blog.livedoor.jp/dankogai/archives/51224106.html
http://blog.livedoor.jp/dankogai/archives/50828019.html
こういうのも読んだのですが・・。
0396393
2010/10/01(金) 20:46:44ID:???ありがとうございます。
現在Perlの勉強をしているのですが、他の言語でも同じ問題があるんですね。
もう少し考えてみて、誘導していただいたスレッドに書き込もうと思います。
0397nobodyさん
2010/10/01(金) 20:58:29ID:CSXq1VpS顧客やショップの情報が決済代行業者経由で送信される際には暗号化通信が行われるため、情報の漏洩、改ざんなどの心配はないとある。
0398395
2010/10/01(金) 20:58:30ID:???いくら調べても分かんないです・・・
なんとなくは、フラグが付いているのはシステム内部のコードで
フラグが付いてないのは何なのか知りまへん。みたいな感じだっ
てことはわかったのですが・・。
use utf8で、そのフラグを付けることに何のメリットがあるのでしょうか・・。
0399nobodyさん
2010/10/01(金) 20:59:58ID:CSXq1VpS広くて深い知識をもちながらどうしてなんだ?嫌がらせ?初心者を却って迷わせてしまっているではないか。
それが熟練先輩のやることなのか?
0400nobodyさん
2010/10/01(金) 21:05:36ID:CSXq1VpS実はあまり実践体験は無いとかじゃないだろうね?
外の世界を知らないプログラムオタクとか。
なんだかなあ
0401nobodyさん
2010/10/01(金) 21:11:54ID:5IgqgdH10402nobodyさん
2010/10/01(金) 21:12:43ID:???0403nobodyさん
2010/10/01(金) 21:13:35ID:CSXq1VpSいい話もあったけど、遣りすぎは却って迷惑だよ。熟練の先輩らには後輩にとって役立つような、力を与えるようなレスを心がけてもらいたい。
そういう人なら尊敬できるんだけどね。
0404nobodyさん
2010/10/01(金) 21:15:46ID:CSXq1VpS自演と判断したかw
君のものの見方が知れるよ?
人を疑うクセか性質持ってるよね。人間不信?
信じるべきでない人を信じないのは妥当な判断だけど、
なんでもかんでも信じないのは単なるバカの一つ覚えだよ。
後者になるなかれ。
0405nobodyさん
2010/10/01(金) 21:17:41ID:???せめて2ちゃんの使い方ぐらい覚えてこようや・・
0406nobodyさん
2010/10/01(金) 21:19:06ID:CSXq1VpSなんでこうなんだ?
0407398
2010/10/01(金) 21:28:02ID:???Perlは内部コードとしてUTF-8を使っていて、utf8プラグマをつけるとプログラム内のリテラルは
内部コードのUTF-8として扱われる。んでもって、内部コードに合わせるために外からの入力文字列は
decodeを使って内部コードにする。外に出すときはencodeして好きな文字コードにする。
Perlの内部コードはUTF-8だけど、そとから入ってくるUTF-8とは違う・・。
でも、utf-8プラグマ使わなくてもUTF-8でコードを書いておけば処理は普通にできる。
わからん・・。
教えてけれ
0408nobodyさん
2010/10/01(金) 21:38:08ID:CSXq1VpSそういうのは迷惑だぞ。聞いたことの無い専門用語をたくさん知り使うことで自分の高い専門度に自己満足?みたいな。
けど、嫌がられないか?そういうのは。
他人をぶっちぎって悦に浸る車や単車の走り屋と同じだよ。他人より抜きん出ることで満足するガリベン野郎?みたいな。
一生家と塾の往復してろ。
0409nobodyさん
2010/10/01(金) 21:39:59ID:???残念だね
0410nobodyさん
2010/10/01(金) 21:41:34ID:???じゃさげるよ。
しかし、そういう時は さげてくれないか?と言いなさい。
現代人って他人に頼むってことができないんだよな。
0411nobodyさん
2010/10/01(金) 21:42:07ID:???残念だね。現代人は。
0413nobodyさん
2010/10/01(金) 21:46:43ID:???残念だね。現代人君。
0414nobodyさん
2010/10/01(金) 21:48:46ID:CSXq1VpS0415nobodyさん
2010/10/01(金) 21:49:48ID:???残念だね。現代人って。
0416nobodyさん
2010/10/01(金) 21:50:49ID:CSXq1VpSちょっと不快な思いをさせると根に持つ
迷惑だね。困ったもんだ。
そのまま一生やってくつもりか?
みんなから迷惑がられて嫌われて死ぬのか?
0417nobodyさん
2010/10/01(金) 21:51:28ID:???use Encode;
my $hoge1 = "ほげ"; # not flagged
my $hoge2 = "\xe3\x81\xbb\xe3\x81\x92"; # not flagged
my $hoge3 = do { use utf8; "ほげ" }; # flagged
my $hoge4 = "\x{307b}\x{3052}"; # flagged
my $hoge5 = decode_utf8($hoge1); # flagged
my $hoge6 = encode_utf8($hoge5); # not flagged
perl側から見れば
$hoge3,$hoge4,$hoge5は「ほげ」という2文字の文字列
$hoge1,$hoge2,$hoge6は「ほげ」を表してはいるもののただの6バイトのバイト列
みたいなかんじ
0418nobodyさん
2010/10/01(金) 21:51:57ID:???自分のことに気がついてないのね。
残念だね。お前。
0419nobodyさん
2010/10/01(金) 21:52:04ID:CSXq1VpSその調子だと会社じゃ上手くやってけないだろ?
今はフリー?それでも客はつかんだろ?
どの程度のプログラムが組めるんだ?作例は?
0420nobodyさん
2010/10/01(金) 21:52:43ID:???君は陰湿じゃないんだね。
なら本名とか住所とか書いたら?
自分の情報も出さないで、ぐちぐち言ってるのは陰湿じゃないの?
の?
0421nobodyさん
2010/10/01(金) 21:53:38ID:CSXq1VpSその人格からするに、最前線で人に接する仕事は無理だろうな。
それ以前に、他人と接するのも無理なのでは?
何年くらい今のその生活してるんだ?
0422nobodyさん
2010/10/01(金) 21:54:39ID:???ここはPerlスレなんで関係ないことは他でやってください。
0423Perl忍者 ◆M5ZWRnXOj6
2010/10/01(金) 21:55:34ID:OBUOwpHF0424nobodyさん
2010/10/01(金) 21:57:19ID:CSXq1VpSそれは嫌だなあ。
陰湿で嫉妬深いきみのわるいのがいるから。
それに、他人のこといえるの?自分はやらんで。
0425nobodyさん
2010/10/01(金) 21:59:10ID:???0426nobodyさん
2010/10/01(金) 22:00:57ID:???ありがとうございます。
なんとなくその辺は理解できたのですが、そのバイト列と扱われるか文字として扱われるか
の違いはどういったことで表れるのでしょうか?
0427nobodyさん
2010/10/01(金) 22:02:07ID:CSXq1VpSPCしか取り得のない頭でっかちなガリベン中学生みたいな印象だ。
こういうのには少しでも力もってもらいたいくないな。
0429nobodyさん
2010/10/01(金) 22:44:18ID:CSXq1VpS0430nobodyさん
2010/10/01(金) 22:54:14ID:???0431nobodyさん
2010/10/01(金) 22:57:24ID:CSXq1VpS今まで作った一番難しいものは?
0433nobodyさん
2010/10/01(金) 23:15:02ID:???0434nobodyさん
2010/10/02(土) 00:05:53ID:???それが読めないバカが紛れ込んでハイレベルだっつっても
おまえがレベル低いだけとしかいえんわな
0435nobodyさん
2010/10/02(土) 00:09:51ID:VTsDZ410少しは書籍側の欠点や反省点を指摘してみろっての。
ここは初心者スレだぞ。わかってんのかカス
0436nobodyさん
2010/10/02(土) 00:11:25ID:???新書でも200ページくらいあるだろ
0437nobodyさん
2010/10/02(土) 00:32:53ID:???クラックされなかったらお前の勝ちでいいんじゃね。
0438nobodyさん
2010/10/02(土) 02:57:17ID:???die したときの出力先は STDERR でいいんですよね?
めんどくさいから常に utf-8 でいこうかなと思ってて・・・
0439nobodyさん
2010/10/02(土) 03:52:41ID:???0440nobodyさん
2010/10/02(土) 05:17:04ID:???よくイマイチつかめないけど
die "fuck!";
ってかいたときにfuck!の出力先はSTDERRですよ
0441nobodyさん
2010/10/02(土) 10:40:11ID:???0442nobodyさん
2010/10/02(土) 18:32:21ID:???学校の授業も難しくてついていけなかったんだろなw
0443nobodyさん
2010/10/02(土) 22:09:44ID:???問題があっても、客のせいにしてきただけじゃないのwwwww
くそわろたww
0444nobodyさん
2010/10/02(土) 23:55:55ID:YMDWyyqc危機意識が軽いのか?
0445nobodyさん
2010/10/03(日) 00:03:59ID:YMDWyyqc君らが言うような心配をする必要は無いと考える。
0446nobodyさん
2010/10/03(日) 00:07:58ID:???ここはPerlスレッドですwwwwww
日本語も難しい技術ですかwwwwwwww
0447nobodyさん
2010/10/03(日) 00:09:44ID:LIDo2XC6お迎えご苦労。
0448nobodyさん
2010/10/03(日) 00:18:40ID:???そんなもの守ってなくても、逮捕されてませんよ? って開き直って。
0449nobodyさん
2010/10/03(日) 01:10:55ID:???世界中に公開する人っているよね。
0451nobodyさん
2010/10/03(日) 08:56:17ID:???質問スレでさえゴミみたいな煽りしかいない。
0452nobodyさん
2010/10/03(日) 09:03:15ID:???質問スレでさえゴミみたいなお前しかいない。
0453nobodyさん
2010/10/03(日) 10:21:43ID:???0454nobodyさん
2010/10/03(日) 12:29:15ID:???0455nobodyさん
2010/10/03(日) 12:43:29ID:???質問者次第でしょ
0456nobodyさん
2010/10/04(月) 01:01:42ID:???hoge'foo()
のような書き方がありますが、これは
hoge::foo()
と等価と考えていいのでしょうか?
この書き方ははじめてみたのですが、最近は推奨されていない書き方なのですか?
0457nobodyさん
2010/10/04(月) 01:10:03ID:???perl5 style foo::bar
0458nobodyさん
2010/10/04(月) 01:20:44ID:???Perl4の書き方なんですね。
シングルクオートはエディタのシンタックスが対応していないみたいなんで、
表示が乱れてあせりました。
0459nobodyさん
2010/10/04(月) 10:26:36ID:pE0m1OKq遵守すべき法令とはどんなものがあるか挙げてみよ。
0461nobodyさん
2010/10/04(月) 10:43:02ID:5t40Vj5P実は知らないのかな?あるいは、単に「法令遵守」って言いたかっただけなのかな?
SSL+レンタルカートでも駄目論者は自分の知識の高さをアピールしたいだけで、
法令遵守論者は自分は違法行為はやってないよってアピールしたいだけとみた。
実は関係法令なんて知らないのにね。
すごいすごいw
0462nobodyさん
2010/10/04(月) 10:59:00ID:DXgsUZrn0463nobodyさん
2010/10/04(月) 11:44:11ID:jxefQVkw0464nobodyさん
2010/10/04(月) 13:25:42ID:???法令があることも知らないというのは、さすがにやばいな。
誰か通報してくれないかな。
0465nobodyさん
2010/10/04(月) 13:34:54ID:MhLBVfU10466nobodyさん
2010/10/04(月) 13:38:57ID:???わからないのなら自分で調べたら?
法人なら知らないとマジでやばいよ。
弁護士でも、近くのWeb制作会社にでもいいから金払ってチェックしてもらった方がいい。
俺たちが教えても信じないだけだし、自分で行動して確認した方が確実でしょ?
0467nobodyさん
2010/10/04(月) 13:57:28ID:???こういうやつは一度痛い目にあわんとわからん。
以後放置でお願いします。
0468nobodyさん
2010/10/04(月) 14:14:40ID:???0469nobodyさん
2010/10/04(月) 14:16:28ID:???0470nobodyさん
2010/10/04(月) 14:40:44ID:???ところで今日知ったんですが
qw/aaa bbb ccc/に対して、
/.+?\s/でマッチすると、"aaa "にマッチするんですね
てっきり、"a "かと思っていました
どういう理屈なんですか、教えてください
0471nobodyさん
2010/10/04(月) 14:42:35ID:???/^.+?\s/と今まではしていたんですが、
^いらなかったんだなぁ、と
0472nobodyさん
2010/10/04(月) 14:45:49ID:???+ 直前のパターンの1回以上の繰り返し
0473nobodyさん
2010/10/04(月) 15:11:06ID:???最小マッチは「一番短くなるように」マッチさせるのではなく、「条件を満たした時点で打ち切る」と
いう挙動をする。なのでマッチ部分が短くなるよう、マッチングの開始位置までずらすといった事は
してくれない。
qw// は qq// の typo だとして、
> perl -Mre=debug -e "qq/aaa bbb ccc/ =~ /.+?\s/"
Compiling REx ".+?\s"
Final program:
1: MINMOD (2)
2: PLUS (4)
3: REG_ANY (0)
4: SPACE (5)
5: END (0)
plus minlen 2
Matching REx ".+?\s" against "aaa bbb ccc"
0 <> <aaa bbb cc> | 1:MINMOD(2)
0 <> <aaa bbb cc> | 2:PLUS(4)
REG_ANY can match 1 times out of 1...
1 <a> <aa bbb ccc> | 4: SPACE(5)
failed...
REG_ANY can match 1 times out of 1...
2 <aa> <a bbb ccc> | 4: SPACE(5)
failed...
REG_ANY can match 1 times out of 1...
3 <aaa> < bbb ccc> | 4: SPACE(5)
4 <aaa > <bbb ccc> | 5: END(0)
Match successful!
Freeing REx: ".+?\s"
0474nobodyさん
2010/10/04(月) 15:11:23ID:???いわゆる最短マッチ、/.+?\s/ とした場合の .+? は最初に \s(空白文字)見つかるまでという意味での最短であって、
マッチの開始位置が最初にマッチした任意の文字(先頭)であることに変わりはない。
0475nobodyさん
2010/10/04(月) 16:51:33ID:qA0vUoH8知識もないくせに知ったかぶりをするのはやめなさい。
見苦しいですよ?
0476nobodyさん
2010/10/04(月) 16:59:31ID:???「貪欲でない」といわれればなんだそりゃと思って調べるけど
最短といわれるとわかった気になっちゃうからな。
0477nobodyさん
2010/10/04(月) 17:12:45ID:???そんなにすごいの?
0478nobodyさん
2010/10/04(月) 17:31:14ID:???は初心者が分かりやすい説明なのか?
人に説明するなら相手にわかり易い説明をなさい。
あなたは道端で人に道を教える時も難解な説明をするのかね?
0479nobodyさん
2010/10/04(月) 18:03:40ID:???0481nobodyさん
2010/10/04(月) 18:10:59ID:???初心者なんでね。
いつからここは熟練者スレになったのかね?
0482nobodyさん
2010/10/04(月) 18:13:45ID:???質問スレでさえゴミみたいな煽りしかいない。
0483nobodyさん
2010/10/04(月) 18:18:19ID:???君が質問者だったらもっと丁寧に質問するが
君は質問者じゃないだろ?
質問があれば質問者のレベルに応じて解答する
今回の場合は質問者は正規表現の書き方を理解しているので、
そのデバッグ手法を説明しているだけ。
君のたとえで言うと、
道端で道を聞かれても、その人を対象にではなく
3歳児を対象に「右」がどっちかっていう説明から始めるのと同じ。
粘着なんてしてないで、XSSについて調べてきたら?
0485nobodyさん
2010/10/04(月) 18:46:52ID:???XSSより前に、本を読む練習からしないとね。
のんたん何かどうだ?
0486nobodyさん
2010/10/04(月) 18:49:24ID:???と思ってりゃいいよ
0487nobodyさん
2010/10/04(月) 18:51:11ID:???0488nobodyさん
2010/10/04(月) 18:51:43ID:???0490nobodyさん
2010/10/04(月) 19:40:20ID:???0491nobodyさん
2010/10/04(月) 22:30:47ID:???ひとりで完璧に安全なプログラム作れる天才さんはこれで理解したろ?
さっさと糞脆弱なショッピングカートでもなんでも作ってなさいってこった
0492nobodyさん
2010/10/04(月) 22:56:59ID:???0493nobodyさん
2010/10/04(月) 23:19:29ID:???0494nobodyさん
2010/10/05(火) 00:02:50ID:???0495nobodyさん
2010/10/05(火) 00:30:28ID:cRXiRLz+さすがですね。プ
0497nobodyさん
2010/10/05(火) 03:45:37ID:???バカな人間を見て、自分はこうならないようにと頑張れる
・知ったかぶりをしない
・わからないことは素直に聞く
・人に言われたことは、疑わずに調べる
・自分の知識を過信しない
・必死にならず冷静に
・日々勉強をする
・分厚い本を読む
・自演はばれないようにする
これは肝に銘じておこう
0498nobodyさん
2010/10/05(火) 07:39:14ID:???NG出来ない
0499nobodyさん
2010/10/05(火) 08:55:44ID:???0500nobodyさん
2010/10/05(火) 12:33:50ID:???Perl使いが何十億人もいるのに今からPerlを覚える必要はない
やるならPythonかRubyやれ
本当ですか?
0501nobodyさん
2010/10/05(火) 12:56:06ID:???> Perl使いが何十億人もいるのに
そんなにいません
> 今からPerlを覚える必要はない
でも、もしそんなにたくさんいたとしても、
だから覚える必要はないということはありません。
「英語を使える人は10億人を超えるのに、今から英語を覚える必要はない」
と言われたらあなたはそれに納得しますか?
> やるならPythonかRubyやれ
この3つはそれぞれ有用です。
職業プログラマーになりたいんだったら全部やりましょう。
趣味でちょっとしたものを工作するならどれか一つでも構いません。
どれをやってもあなたの世界は広がります。
暇だから、gizmodo翻訳風に釣られてみた。
0502nobodyさん
2010/10/05(火) 13:03:00ID:???スレの雰囲気や回答者の質など。
0503nobodyさん
2010/10/05(火) 13:03:19ID:???Perl,Python,Rubyを覚えるとしたらどの順番で覚えたほうがいいでしょうか?
0504nobodyさん
2010/10/05(火) 13:04:56ID:???0505nobodyさん
2010/10/05(火) 13:37:27ID:tVnNPBxi祝日ってかならずしも定日ではないんですよね。第二日曜日とか第三とか。
こういう場合はみなさん、どう振り分けていますか?
0506nobodyさん
2010/10/05(火) 13:43:00ID:???祝日データを持つしかないと思う。
0507nobodyさん
2010/10/05(火) 13:44:06ID:tVnNPBxi0508nobodyさん
2010/10/05(火) 13:50:36ID:???配ったりするかも。あるいは自動バージョンアップ機能に含めるとか。
なんしろ勝手に法律かわったり天皇が代替わりしたりするわけで計算
じゃどうにもならんよ。
0509nobodyさん
2010/10/05(火) 13:59:52ID:???0510nobodyさん
2010/10/05(火) 14:33:00ID:???去年のシルバーウィークは
まともに休日表示されてないカレンダーが多かった。
0511nobodyさん
2010/10/05(火) 14:38:28ID:???http://ja.wikipedia.org/wiki/%E3%82%B7%E3%83%AB%E3%83%90%E3%83%BC%E3%82%A6%E3%82%A3%E3%83%BC%E3%82%AF
0512nobodyさん
2010/10/05(火) 15:04:31ID:???0513nobodyさん
2010/10/05(火) 16:32:15ID:???use で使えばいいのかな?
ググレカスですかそうですか。
0514nobodyさん
2010/10/05(火) 19:15:19ID:???だっけ?
めんどくせぇなぁww
0515nobodyさん
2010/10/05(火) 19:17:52ID:???0516nobodyさん
2010/10/05(火) 20:08:05ID:???「客から電話がかかってこない日」ならある
0517nobodyさん
2010/10/05(火) 22:22:50ID:???0518noboby
2010/10/06(水) 02:25:55ID:???0519nobodyさん
2010/10/06(水) 03:11:04ID:???人を表示させるときの配列を下記のように、DBの格納順で設定しています
while (($Key,$Value) = each %P){
@VS_VALUES = split(/\s/,$Value);
これをランダムにするのはどうすればいいんでしょうか?
どうかお願いいたします。
0520nobodyさん
2010/10/06(水) 03:56:29ID:???>>1
【 スクリプト改造依頼スレ】(丸投げ) part7再々
http://hibari.2ch.net/test/read.cgi/php/1222645553/
★三 【 スクリプト改造工房 PART 9 】 ★三
http://hibari.2ch.net/test/read.cgi/php/1143834740/
金出すから改造してよvol.3
http://hibari.2ch.net/test/read.cgi/php/1162147035/
0521Perl忍者 ◆M5ZWRnXOj6
2010/10/06(水) 07:41:58ID:2XmazIev俺が知ってる中では100人ぐらいが俺の影響うけてPerlとかわめいてやがる
まじうぜえんだが もともとPHPやってるウンコどもも俺の影響でPerlやりだしたし
俺がJPAに献上してるってことあいつらは
だけどあいつらは俺の真似ばっかりしてくんだよ 模倣 アイディアとか発言とか
知ってるプログラマとかも
本当うざくてうざくてたまらねえわほんとに
0522Perl忍者 ◆M5ZWRnXOj6
2010/10/06(水) 07:43:12ID:2XmazIev横からFFやってたやつがドラクエやりだして熱弁しだすのがきにくわねえ
本当消えろ!!
0523nobodyさん
2010/10/06(水) 10:09:00ID:???そういう枕をつけるから相手にしてもらえなくなるわけだな。
一行目のeach %Pをperlが勝手に決めた順番じゃなくてランダムにしたいのか、
二行目の@VS_VALUESの中身の並び順をランダムにしたいのかどっちだか
よくわからんが、とりあえずList::Utilのshuffleでなんとかなるんじゃね?
0524nobodyさん
2010/10/06(水) 11:06:02ID:???@keyに取得させてshuffleさせてみました
use strict;
use List::Util qw/shuffle/;
my @key = ($Key,$Value) = each %P;
@VS_VALUES = split(/\s/,$Value);
my $key = List::Util::shuffle @key;
-------------------------------
use strict;
use List::Util 'shuffle';
my @key = ($Key,$Value) = each %P;
@VS_VALUES = split(/\s/,$Value);
print shuffle( @key );
スクリプトエラーはでてないのですが、実際に入れてみたところ二つともダメでした
0525nobodyさん
2010/10/06(水) 11:09:36ID:???0526nobodyさん
2010/10/06(水) 11:41:28ID:???foreach $Key(shuffle keys %P){
$Value = $p{$Key};
@VS_VALUES = split(/\s/,$Value);
0527nobodyさん
2010/10/06(水) 12:59:05ID:???sub shuffleを使ってみようかと思ったんですがその場合whileとforeachどっちのほうが良いんですか?
0528nobodyさん
2010/10/06(水) 13:15:31ID:???判断もつかないようだともう少しちゃんと勉強して出直した
方がいいレベル
0529nobodyさん
2010/10/06(水) 13:40:19ID:???shuffle($key);
foreach $Key (keys %P){
@VS_VALUES = split(/\s/,$P{"$Key"});
}
?>
0530nobodyさん
2010/10/08(金) 00:03:35ID:???use List::Util;
@key = List::Util::shuffle %P;
%P = @key;
while (($Key,$Value) = each %P){
@VS_VALUES = split(/\s/,$Value);
}
こんなところか
0531nobodyさん
2010/10/08(金) 02:02:37ID:???0532nobodyさん
2010/10/08(金) 05:36:21ID:???http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1248240982
0535nobodyさん
2010/10/08(金) 14:48:28ID:???問い合わせしておんなじコト言われた?
問合せ先の業者がかわいそうだな。ごねてんだろうな。
0536nobodyさん
2010/10/08(金) 14:54:36ID:???529と530はまるでだめだが526は大筋問題ない。
「}」の省略とpの大文字小文字間違いぐらいは
自分で修正しろw
0537nobodyさん
2010/10/08(金) 16:10:19ID:???0538nobodyさん
2010/10/08(金) 16:17:58ID:???使えるよ。List::Utilをuseしてないとか言いたいのかな。
List::Utilのshuffle使おうって話の流れなんだから
そのぐらいは補えよ。
0539nobodyさん
2010/10/08(金) 17:16:58ID:???foreach $Key(List::Util::shuffle keys %P){
@VS_VALUES = split(/\s/,$P{"$Key"});
こうだろ
ただVALUESの値が取得できてないな
0540nobodyさん
2010/10/08(金) 17:31:48ID:???0543nobodyさん
2010/10/08(金) 18:44:08ID:???0544nobodyさん
2010/10/08(金) 18:57:03ID:???順番は保証されてないけど、同じ環境で実行するとたぶん同じ順番になるから
毎回違う順番にしたいって時にはshuffleしたキーを使わなきゃだめ
0545nobodyさん
2010/10/08(金) 19:10:44ID:???実行時にランダマイズが必要なのはその通りだが
http://perldoc.perl.org/perl581delta.html#Hash-Randomisation
http://fleur.hio.jp/perldoc/modules/perl/perl-5.8.8/pod/perl581delta.mix.html#Hash_Randomisation
0548544
2010/10/08(金) 20:02:12ID:???use strict;
use Data::Dumper;
my %hash = (foo => 1, bar => 2, baz => 3, qux => 4);
print "perl $]\n";
print "keys: @{[keys %hash]}\n";
print Dumper \%hash;
__END__
perl 5.012002
keys: bar baz qux foo
$VAR1 = {
'bar' => 2,
'baz' => 3,
'qux' => 4,
'foo' => 1
};
0549nobodyさん
2010/10/08(金) 23:25:53ID:???0552Perl忍者 ◆M5ZWRnXOj6
2010/10/09(土) 19:21:18ID:7nxLhNm/GD::GraphがJcode使っててむかつくので
なんかグラフ表示させるやつ教えてください
javascriptでもいいですか?教えてください
クソコテですが まじめに教えてください
0553nobodyさん
2010/10/09(土) 19:23:06ID:???0554Perl忍者 ◆M5ZWRnXOj6
2010/10/09(土) 21:58:06ID:7nxLhNm/0555nobodyさん
2010/10/09(土) 23:06:01ID:???0556nobodyさん
2010/10/10(日) 02:11:40ID:???use List::Util 'shuffle';
foreach $Key(shuffle keys %P){
@VS_VALUES = split(/\s/,$P{"$Key"});
}
HASHはランダムに納められてるだけでランダムに表示されるわけではない
0558nobodyさん
2010/10/10(日) 18:34:10ID:???この中から名前を検索して、リンクのさいにuser.cgi?=ユーザーIDとしたいのですが、どのように書けば良いのでしょうか?
0559nobodyさん
2010/10/10(日) 19:31:01ID:???>>1
依頼されたツールを誰かが作るスレ
http://hibari.2ch.net/test/read.cgi/php/1078997682/
金出すからスクリプト作ってよvol.1
http://hibari.2ch.net/test/read.cgi/php/1150508106/
0560nobodyさん
2010/10/14(木) 13:38:00ID:???最初はGETメソッドで開発して、
最後にPOSTに変更するとやり易いなあと。
クエリーがアドレスバーに表示されるので、渡すデータやキーを確認できるから。
これまでは$queryで処理結果ページに表示してた
そう思わない?
みんなどうしてる?
日本語スマソ
0561nobodyさん
2010/10/14(木) 14:36:32ID:???>>1
【総合】 Webprog板質問雑談スレッド 1
http://hibari.2ch.net/test/read.cgi/php/1131016915/
開発環境おしえて
http://hibari.2ch.net/test/read.cgi/php/1171452901/
スクリプト言語と開発効率について
http://hibari.2ch.net/test/read.cgi/php/1177517787/
生産性、効率性を重視した開発環境
http://hibari.2ch.net/test/read.cgi/php/1005486101/
0562nobodyさん
2010/10/15(金) 16:50:22ID:1IbFyG9F本番環境では文字化けしてしまいます。Mysqlのバージョンは5.1.34です。
テキストはUTF8でバイナリデータとしてはきちんと入っていました。
Blob型からデータを取り出すときには何かしないといけないのでしょうか?
0563nobodyさん
2010/10/16(土) 10:56:52ID:???0564nobodyさん
2010/10/16(土) 12:03:58ID:???接続時はSET NAMES utf8としていますが
SQLの実行直前ですか?
ぐぐるとSET NAMES binaryとしている人もいるようです
0565nobodyさん
2010/10/16(土) 12:15:08ID:4m15JmGpナイスヒントでした。
SET NAMES utf8ではだめでしたが直前でSET NAMES binaryを入れたところ化けないようになりました。
blob型を使うときは切り替えないといけないんですね
0567nobodyさん
2010/10/19(火) 10:27:12ID:???と
require LWP::UserAgent;
とは同じということでよろしいかな?
0568nobodyさん
2010/10/19(火) 10:33:23ID:???0569nobodyさん
2010/10/19(火) 10:33:56ID:???意外だた。
0570nobodyさん
2010/10/19(火) 10:38:28ID:???0571nobodyさん
2010/10/19(火) 10:40:06ID:???違うのはimportの有無と読み込みタイミングだが、LWP::UserAgentは
$ua = LWP::UserAgent->newしたら$uaのメソッド呼ぶだけだから普通の
使い方なら特にimportしなきゃいけないもんないしな。どっちでもいいん
じゃない?
0572nobodyさん
2010/10/19(火) 10:41:05ID:???require LWP::UserAgent;
ってなってるしな。
0573567
2010/10/19(火) 10:42:31ID:???0574nobodyさん
2010/10/19(火) 11:17:20ID:???0575nobodyさん
2010/10/19(火) 11:43:50ID:???が951になる理由を教えてくれ
0576nobodyさん
2010/10/19(火) 12:10:30ID:???1.4が少数部持ってるから掛け算した結果も小数部を持つ952
これを%d整数としてはめ込むときにどうにかしてるんだから (680*1.4) . ''で
一旦文字列にすれば952になるだろうね
0577nobodyさん
2010/10/19(火) 12:16:23ID:???textファイルじゃダメなんでしょうか?
2ちゃんねるのログをそのままtextファイルを使用した場合のデメリットなどがあったら教えてください
0579nobodyさん
2010/10/19(火) 12:23:44ID:???ただのテキストだと本文に他の記事をコピペされると記事の区切りとか
わかんなくなったりするので、はっきり区別がつくように特別な約束を決めて
あるわけだな。
0580nobodyさん
2010/10/19(火) 12:24:07ID:???0581nobodyさん
2010/10/19(火) 13:11:09ID:???メール欄[ ]
↑これがあるけど、需要ねぇだろコレ
マジ何でほぼ全ての掲示板に共通してあるんだよ
0582nobodyさん
2010/10/19(火) 13:27:15ID:???混乱するからな。
0583nobodyさん
2010/10/19(火) 13:42:10ID:???0584575
2010/10/19(火) 18:46:36ID:???680*14/10 として小数を使わなければいい
よくよく考えてみたら当たり前の話だな
intで切り捨てとかsprintf使えとか言うてるサイトは死滅してくんねーかな
0585nobodyさん
2010/10/19(火) 18:55:35ID:???0586nobodyさん
2010/10/19(火) 19:08:01ID:???浮動小数点の丸め誤差を理解出来てない奴が、
適当に解説するのは止めてくれ!と心底思うが
584に言われたくは無いだろーなあ。
0587nobodyさん
2010/10/19(火) 22:56:38ID:???書店で関係書籍を見る限り、モジュールについて詳しく書かれている書籍はほとんど無いと思うんですが。
やっぱりCPANを直接読むんですか?英語だと思うんですが・・
0588nobodyさん
2010/10/19(火) 22:58:42ID:???いやあ、私は時々使いますよ。
運営側としては名前もメール欄も使うべきものなんだと思ってます。
多くの人が使わないようだけど、本来は使ってしかるべき機能かと。
名前も連絡先も明らかにせずにいきなり話に入るなんていうのがリアルで当然にはなって欲しくないです。
0591nobodyさん
2010/10/19(火) 23:11:55ID:???あとはperldoc.jp
0593nobodyさん
2010/10/19(火) 23:12:07ID:???英語ぐらい読めよ。技術文書はそんなに難しくないぞ。特にコンピュータ系の
専門用語は英語そのままカタカナにしたのが多いから楽だよ。
0594nobodyさん
2010/10/19(火) 23:14:58ID:???何か良い書籍はありませんか?
知りたいのは主に以下のもの
CGI
LWP::UserAgent
HTTP::Request
Jcode
XML::DOM
XML::Parser
0595nobodyさん
2010/10/19(火) 23:19:46ID:???0596nobodyさん
2010/10/19(火) 23:20:48ID:???>>1
【Perl,CGI】参考書籍 第四版
http://hibari.2ch.net/test/read.cgi/php/1250989562/
参考書籍推薦スレッド
http://hibari.2ch.net/test/read.cgi/php/1014836425/
【総合】 Webprog板質問雑談スレッド 1
http://hibari.2ch.net/test/read.cgi/php/1131016915/
0597nobodyさん
2010/10/19(火) 23:31:32ID:???エンジンによって振り分けて処理するしかないって結論になってなかったっけ?
Jcodeモジュールでできるのでは?
0598Perl忍者 ◆M5ZWRnXOj6
2010/10/19(火) 23:36:59ID:I4QlovXi0599nobodyさん
2010/10/19(火) 23:40:37ID:???これって検索エンジン毎に分岐しなくてもいいんじゃないかな?
以前、質問したら自信満々に 「エンジン毎に分けるしかないでしょうね」 とか言われたけど、
そんなことないじゃないか。
0600nobodyさん
2010/10/20(水) 00:01:49ID:???何行にも渡って処理していた日本語変換が2行ほどになってしまったw
モジュールスゴイね。(;´∀`)
0601nobodyさん
2010/10/20(水) 01:36:24ID:???日本語の変換するならJcode.pmで十分実用に足るんじゃないの?
0602nobodyさん
2010/10/20(水) 02:33:30ID:???充分に単純化できてるし、効果も得てるんでこれでいいと思ってる。
2行を1行に出来たところでさしたる差はないから。
Encodeは正直まだどういうものなのかわかってない。
文字コード変換と日本語変換の違いなのかな?って想像してる。
0603nobodyさん
2010/10/20(水) 02:58:27ID:???0604nobodyさん
2010/10/20(水) 05:24:47ID:???初心者だったらJcode.pm使うよりは素直にEncode使ったほうがいいような気も。
Jcode.pmを使ってるサンプルスクリプトは、
pre-modernで参考にしない方がいいものも結構あるし。
0605nobodyさん
2010/10/20(水) 07:06:43ID:???$string =~ tr/一二三/壱弐参/;
0606nobodyさん
2010/10/20(水) 08:28:58ID:???0607nobodyさん
2010/10/20(水) 11:33:27ID:???これまではjcode.plやutftosjisとかを検索エンジン毎に分岐し、更にキーワードが入ったパラメーター名毎に分岐して入手していました。
モジュールJcodeを使ったら何十行にも渡っていたものが短い2行に。
モジュールの威力を知った。
0608nobodyさん
2010/10/21(木) 02:33:10ID:???すごい高機能なんだって?本で知って興味持ってる。
昨日話したJcode、その後も順調に機能してるよ。以前はどうしても文字化け出てきちゃうのもあったんだけど、
いまやほとんど無し。
ありがたやありがたや。
0609Perl忍者 ◆M5ZWRnXOj6
2010/10/21(木) 07:33:22ID:im6AkfLS成果物がクソとかプログラミングもクソなやついるから
あーあーあのubuntu厨見たいなかんじですね(笑)
0610nobodyさん
2010/10/22(金) 11:45:08ID:???Emacsと言っただけで ほざいてる とか言われるわけか、参ったな。
話に聞いただけでまだこれから試すか否かなんだけどね。
体験者がいたら話聞いてみたいなと。
0611Perl忍者 ◆M5ZWRnXOj6
2010/10/22(金) 16:50:09ID:1atSZw6K0612Perl忍者 ◆M5ZWRnXOj6
2010/10/22(金) 16:54:37ID:1atSZw6K0613nobodyさん
2010/10/22(金) 18:49:56ID:???よろしければ問題文を張るので協力御願いします。
あと、もし他に相応のスレがあるなら誘導御願いします。
0614nobodyさん
2010/10/22(金) 18:54:45ID:???0615nobodyさん
2010/10/22(金) 20:01:30ID:???0616nobodyさん
2010/10/23(土) 02:05:49ID:???貼ってくれたら俺はやるよ。
なんか宿題とかそういう下らないことしたい気分だし。
0617nobodyさん
2010/10/23(土) 07:53:35ID:???0618nobodyさん
2010/10/23(土) 09:58:15ID:???MySQL とか PostgreSQL とかのセットアップがめんどくせーw
もっと、ちゃちゃっとセットアップできるの無いのかしら?
0619nobodyさん
2010/10/23(土) 10:00:59ID:???0620nobodyさん
2010/10/23(土) 12:42:59ID:???いろんな言語で宿題 第五編
http://hibari.2ch.net/test/read.cgi/tech/1276873238/
0623Perl忍者 ◆M5ZWRnXOj6
2010/10/23(土) 16:46:29ID:21A5e2350624nobodyさん
2010/10/23(土) 17:52:56ID:???自前でデータ保存読み込みのコードを書くより楽だから
0625nobodyさん
2010/10/23(土) 19:48:57ID:???DB はシステムが逝くと使い物にならない。
こうゆう部分で二の足踏んでる。
0626nobodyさん
2010/10/23(土) 20:01:46ID:???0627nobodyさん
2010/10/23(土) 20:52:18ID:???0628nobodyさん
2010/10/23(土) 22:49:15ID:???0629nobodyさん
2010/10/23(土) 23:32:08ID:???ありがとうございます。本当にわからなくて困っていたのでお願いします。
問題:関数のfactorial、area_circle、wrapitを使って出力が得られるよう
主モジュールを作成せよ。(関数と一体になった完全なプログラム)
(テキストp03176.plの青春の詩YOUTHを用いる)
0630nobodyさん
2010/10/23(土) 23:33:10ID:???#getsrc x 176
use strict;
my %count;
my $size = 4; # カウントする単語の最小サイズ
while( <DATA> )
{
my @words = split;
foreach my $word ( @words )
{
next if length($word) < $size;
$count{$word}++ if $word =~ m/^[a-zA-Z]+([-'][a-zA-Z]+)*$/;
}
}
my $uniq_words = keys %count;
unless ($uniq_words)
{
print "ファイルには単語がありません。\n";
exit;
}
my $total_count = 0;
my $total_length = 0;
foreach my $word ( keys %count )
{
$total_count += $count{$word};
$total_length += length($word);
}
my $avg_length = $total_length/$total_count;
print <<STATUS;
$size文字以上の長さの単語の出現状況
------------------------------------------
0631nobodyさん
2010/10/23(土) 23:34:34ID:???単語の種類 = $uniq_words
平均の単語長 = $avg_length
STATUS
__DATA__
YOUTH
Youth is not a time of life - it is a state of mind, it is
a temper of the will, a quality of imagination, a vigor of
the emotions, a predominance of courage over timidity, of
the appetite for adventure over love of ease.
Nobody grows old only by merely living number of years;
people grow old only by deserting their ideals.
You are as young as your faith, as old as doubt; as young
as your selfconfidence, as old as your fear; as young as your
hope, as old as your despair.
0633nobodyさん
2010/10/25(月) 20:02:17ID:???検索エンジンも使えないの?
その問題は具体的にfactorial、area_circle、wrapitがどういうルーチンなのかわからないと解けないんだよ。
factorial、area_circle、wrapitがどういうルーチンかはわかっているんでしょ?
だったらそれを書いた後に、名前から勝手に想像するが、
print factorial(5);
とかやってみればいいじゃない。
0634nobodyさん
2010/10/26(火) 23:13:25ID:???$filepath = "c:/folder";
$filename = "excelfile";
$xlspath = "${filepath}/${filename}.xls";
略
print $xlspath;
$wb->SaveAs($xlspath);
printの時点ではちゃんと拡張子も含まれた完全なパスなのですが
OLE32 LastErrorを取ってやるとSaveAsのところでC:\//folder/excelfile というパスが見つからないというエラーが出ているようです
SaveAsの引数に直接ファイル名まで入れた絶対パスのリテラルを書くとちゃんとxlsファイルが出力されるので単に渡される文字列が正しくないことが原因だと思うのですが・・・
どのように修正すればよいのかご教授ください、よろしくお願いします
0635nobodyさん
2010/10/28(木) 22:26:44ID:???my $param = $in->param('abc');
abc が渡されてなければ、param の結果は undef でいいんですよね?
0636Perl忍者 ◆M5ZWRnXOj6
2010/10/28(木) 22:28:11ID:oSh7LqBC老人? 確認するための老人?
0637nobodyさん
2010/11/04(木) 14:47:19ID:8SyFnluahoehoeとは,[ 1 ]上の[ 2 ]の[ 3 ]となることができる[ 4 ]をいう。
hoehoeは,[ 5 ]時に取得する。
hoehoe,[ 6 ]よって[ 7 ]する。
-----------------------------------------------------------------
ここから[]に含まれた1から7までの数字を全部抽出したくて、
open( DATA, "C:\teigi.txt" );
while(<DATA>){
if(/\[\s(\d+?)\s\]/g){
print "$1\n";
}
}
とやってみたのですが、
1
5
6
のように各行で最初にマッチした数字しか取り出せません。
どのように修正したらいいか教えてください。お願いします。
0638nobodyさん
2010/11/04(木) 15:01:07ID:???0640nobodyさん
2010/11/04(木) 15:13:30ID:???my $text;
read(IN, $text, (-s IN));
close(IN);
my @data = $text =~ /\[ (\d+?) \]/gs;
print join("\n", @data);
exit;
0642nobodyさん
2010/11/05(金) 21:30:27ID:???$cfg->param(-block=>'hoge', -values=>{'time'=>time()});
とするとブロックを追加でき、
$cfg->param(-block=>'hogel');
でブロックにアクセスできます。
が、
$cfg->delete(-block=>'mysql');
としてもブロックを削除できません。
ブロックごと削除するにはどう記述したらよいですか?
0643nobodyさん
2010/11/06(土) 10:03:24ID:???delete メソッドを拡張するといいよ。
0644nobodyさん
2010/11/06(土) 10:05:34ID:???delete $cfg->{_DATA}->{mysql};
とやれば消えるか。
0645nobodyさん
2010/11/08(月) 00:17:08ID:???あまりにもマイナーな形式のため、標準のモジュールでは対応してないみたいです。
ただAPIを使用すれば解凍できそうなので、下記のURL(C言語?)を参考にPerlでAPIを組むことにしました。
ttp://tokovalue.web.infoseek.co.jp/LZOpenFile_U.htm
----------------------------------------------------------------------------------------
use Win32::API;
my $kaitou = new Win32::API("lz32", "LZOpenFile", ["P,P,N"], "N")
----------------------------------------------------------------------------------------
しかしAPIの宣言はできたのですが、下記の構造体の部分をPerlで書く方法がわかりません…
Type OFSTRUCT
cBytes As byte
fFixedDisk As byte
nErrCode As Integer
Reserved1 As Integer
Reserved2 As Integer
szPathName As String * 128
End Type
調べたらpack、unpackを使えば構造体を使用できるらしいのですが、例等がないため見当もつかないです。
もしどなたか分かる方がいれば教えて頂いてもよろしいでしょうか?
お願い致します。
0647nobodyさん
2010/11/08(月) 18:53:06ID:u2tFSMiGEncode::JP::H2Z
Lingua::JA::Regular::Unicode
Unicode::Japanese
何が主流なんでしょうか?
CentOS5.5 perl v5.8.8
0648nobodyさん
2010/11/09(火) 04:15:52ID:???微妙に機能が違った気がするけど覚えてない
俺はLingua::~~
を使ってる
0649nobodyさん
2010/11/10(水) 16:07:10ID:???具体的にはクエリが空っぽなら入力フォームを表示。
表示した入力フォームから入力があればクエリのデータを読み取って出力をするプログラムが走るようにしたい。
空を判定するのにunless( !defined( $a )こうやって見たけどどうやら空でも0でもない何かが入ってるらしくバグる。
0650nobodyさん
2010/11/10(水) 16:11:20ID:???0651nobodyさん
2010/11/10(水) 16:19:32ID:???0652nobodyさん
2010/11/10(水) 16:39:06ID:???フォームを強制的に表示して次に空で送信すると以下のようにURLに何かくっ付きます
ttp://xxxxxx.jp/idsaves.cgi?t1=&t2=&t3=&t4=
このときは値は空のようです
フォームを表示せずに普通にCGIを呼び出したアドレスはこれです。
ttp://xxxxxx.jp/idsaves.cgi?
このときの値は0のようです
0でもない空でもない幻はこの2パターンに対したまたま組んだプログラムが上の時は0を想定して
下のときは空を想定したプログラムでたまたまテストして両方エラーだった為0でも空白でもないと思い込んだようです。
0653nobodyさん
2010/11/10(水) 17:04:29ID:???$a $bは使うなとなんべん言ったら…
それと今回はそれ以前の話だったようだけど、
本来空文字かどうか判断するなら ne を使うべきで defined は使うべきでない
# 文字があるとき true を表示したい
$str = '';
defined $str ? print "true\n" : print "false\n"; #=> true
$str ne '' ? print "true\n" : print "false\n"; #=> false
0654nobodyさん
2010/11/10(水) 19:03:35ID:???なにかコードがPerlとは違うように見えるのですが。
省略か何かの書き方の違いですか?
それとどこかで拾ってきたサンプルソースがdefinedではなく!definedなってて
それでバグったみたいです!definedは単なるミス表記なのか何か意味があるのか教えてください。
0656nobodyさん
2010/11/10(水) 19:40:50ID:???今時のMVCモデルに逆行している…。
unless (!defined(**)) は、 if (defined(**) と同じ。
$aと$bはsortに使われる特殊な変数なので、それ以外の用途には使わないのがお約束です。
素直にCGI.pmを使ってはいかがでしょうか。
use CGI;
my $q = new CGI;
だったとして、
htmlの中に、<input name="flag" value="1" />などと仕込んでおいて、$q->param("flag")の真偽で判定するとか。
0657nobodyさん
2010/11/10(水) 20:11:56ID:???関係ないけど、このほうが気分的にすっきりしてて好き
0658nobodyさん
2010/11/10(水) 23:45:12ID:???0659nobodyさん
2010/11/11(木) 00:17:16ID:???ってやりたくなっちゃうw
0660nobodyさん
2010/11/11(木) 00:28:20ID:???でもフレームワークって人によるコーディングの揺らぎを制限するもんじゃないっすか?
矛盾してるよね。
開発者の意図を汲むなら、Perl にフレームワークって必要無いんじゃね?
って思えてきた木曜日の深夜。
0661nobodyさん
2010/11/11(木) 06:31:03ID:9cAwBIieフレームワークの選択肢はあるし、自分でも作れるから矛盾はしてないんじゃない?
0663nobodyさん
2010/11/15(月) 22:57:52ID:rKCqUAELhttpd.confや.htaccessの設定で認証を行うと、セキュリティは高いのですが、ログアウトができません。
そこでクッキーとスクリプトで認証(パスワードからハッシュを求めてパスワードファイルと比較)しようとしたのですが、
Apacheの認証(httpd.confや.htaccess)と併用すると、スクリプトで認証した後でApacheが認証要求を
出して二回ログインする必要がありそうです。
何か良い方法はないでしょうか?
0664nobodyさん
2010/11/15(月) 23:23:53ID:???0665nobodyさん
2010/11/15(月) 23:25:21ID:???0666663
2010/11/15(月) 23:28:15ID:???0667nobodyさん
2010/11/15(月) 23:32:59ID:???0668663
2010/11/15(月) 23:48:34ID:rKCqUAEL0669663
2010/11/16(火) 00:01:48ID:???△▲ WebProg 初心者の質問 Part22 ▼▽
http://hibari.2ch.net/test/read.cgi/php/1272872528/
0670nobodyさん
2010/11/16(火) 03:25:31ID:???Webページ内の任意のタグ内のテキストを全て取得する方法を探しています
以下のような処理です
<div class="hoge" id="moge">
<a href="hage">TEST</a>
</div>
↑Webページ内から上記のような部分を探し出し、div、hoge、mogeといったパラメータを指定して
↓以下を出力する
<a href="hage">TEST1</a>
対象ページを全取得し、改行やタブを消去して正規表現で…と最初は考えていたのですが、
もっとスマートな方法があれば知りたいです
参考になるサイトなどありましたら教えて下さい
0671670
2010/11/16(火) 03:29:36ID:???抽出対象は「入れ子」になっていない事が前提です
つまり以下のような存在は考慮する必要はありません
<div class="hoge" id="moge">
<div class="hoge" id="moge"><a href="hage">TEST</a></div>
</div>
0673nobodyさん
2010/11/16(火) 05:48:42ID:MILxW7l40674670
2010/11/16(火) 06:45:19ID:???ありがとうございます
Web::Scraperで簡易なテストプログラムが動作する所まで進みましたが、
今の所HTMLタグを全て除去した素のテキストしか取得してくれません
>>670で言えば「TEST」しか表示されない状態です
もう少し調べてみます
0675670
2010/11/16(火) 07:32:25ID:???process "mage", "hige" =>"TEXT";
を
process "mage", "hige" =>"HTML";
に変更してうまくいったようです
0676nobodyさん
2010/11/17(水) 12:19:54ID:???以下のように、定義だけモジュール化しています。
use My::Module;
my $mod = My::Module->new();
my $dbh = $mod->ret_DBI;
同様に、Text::XslateをMy::Moduleに書いて
my $tx = $mod->ret_Xslate;という風に使おうと思ったのですが、
mod_perl環境下では、正しく定義されないようなのです。
(My::Module中でpath => '/var/www/html/myapp/template' としているのに、
/var/www/htmlにそんなテンプレはねぇ!と怒られます。)
何か回避策はないものでしょうか?
また、Tiantモードでも怒られまくるのですが、
「Tiantモードでテンプレートエンジンを使った書き方」講座みたいなURLを
ご存知なら、併せて教えてください。
よろしくお願いします。
0677nobodyさん
2010/11/18(木) 21:33:53ID:???その My::Module は singleton にすべきじゃないかな。
0678nobodyさん
2010/11/18(木) 22:36:52ID:???テンプレート出力
ファイルロック
そのほかモロモロ
など、自作関数がいくつかあり、今までは require してただけなんだけど、
これら関数をモジュールにしてファイルを分けるのって非効率だと思います?
なんか自分がどうやって関数とかまとめていけばいいのか分からなくなってきた orz
0679nobodyさん
2010/11/19(金) 09:10:25ID:???use myModule qw/function_to_use/;
できるようにすればいいんじゃない。
0680676
2010/11/19(金) 16:58:32ID:???httpdを再起動するまで反映されない事によくやく気づきました
orz
>>677
singleton初めて知りました。
稀に引数受けて挙動を変える事もあるので、
なんとなくデメリットの方が大きい気がします。
(きちんとsingletonを理解できてないだけかもしれませんが)
>>678-679
私の場合、主にメソッドを返すMy::Moduleと、
DBIやら自分の鯖へのログイン状態(WWW::Mechanize)やら、
主に定義を返すMy::Definitionに分けてます。
が、Perlしか知らないし、そのPerl関連の書籍も一冊も持ってない人間なので
参考にはしない方がいいんじゃないかなーと思います。
(参考にすべき人のご登場をお待ちしております)
0681nobodyさん
2010/11/19(金) 22:46:32ID:???0682nobodyさん
2010/11/20(土) 00:34:47ID:???捨てずに使うことを前提にすると、自分ならこんな感じ。
テンプレート出力はメールの本文作成にも使えそうだから独立したモジュールに。
ファイルロックはファイルシステム関係でまとめたパッケージに放り込む。
パンくずリストは作り次第でフレームワークのプラグイン的位置づけを考えるか、HTML生成系でまとめとくか、かな。
#デザイナーと共同作業するならできるだけテンプレートに直書きしておくのもアリだと思う
#(例えば「>」を「>」に変える程度ならソース追わなくていいように)
まあ、一部分使いたいのに余計なものが付いてくる嫌悪感の度合いで決めたらいいんじゃないかな。
あとちょこちょこ手入れるだろうからバージョンは書いといた方がいいよ。
0683nobodyさん
2010/11/20(土) 00:57:44ID:???そんなつまらんことよりは、機能増やすたびにテスト書くようにして、
git なり svn に入れて一元管理するべき。
0684nobodyさん
2010/11/20(土) 01:59:11ID:???ちゃんとしたMVCで書いてれば動作確認をブラウザからじゃないと出来ない、なんてことにはならないけど。
0685682
2010/11/20(土) 08:29:04ID:???説明不足だったけど、
過去に納品したものに改修の依頼が入った時に$VERSION変数があるといいよという程度の話。
svnで言うならリリースごとにタグを付ける感覚かな。
0686nobodyさん
2010/11/20(土) 11:53:57ID:???この場合個別にエスケープしなければいけないのでしょうか?
my $value = "test(test)[test]{test}test";
my $replace = "(test)[test]{test}";
$value =~ s/$replace/test/g;
上のような場合に結果が「testtesttest」になるようにしたいといった感じです。
単純に置き換えしたいだけなのでraplace関数的なものがあればそれで十分なのですが…
初歩的な質問ですみません。よろしくお願いします。
0687nobodyさん
2010/11/20(土) 12:21:57ID:???0688nobodyさん
2010/11/20(土) 12:59:38ID:???メタ文字で回避できたんですね、
もう一度よく調べて直してみようと思います。
どうもありがとうございました。
0689nobodyさん
2010/11/20(土) 13:01:14ID:???0690nobodyさん
2010/11/20(土) 17:35:05ID:???> ちゃんとしたMVCで書いてれば動作確認をブラウザからじゃないと出来ない、なんてことにはならないけど。
ちゃんとしたMVCについて詳しく。
0691nobodyさん
2010/11/20(土) 20:16:33ID:???ファイルロックほかファイル操作全般
汎用 (time で得たのを文字列で返すとか)
の3つに分けてみた。
オブジェクトにしたら便利なのは、ファイルロックとテンプレート出力ぐらいかな。。。
がんばりゅ!
0693nobodyさん
2010/11/21(日) 08:41:54ID:???684ではないけど、少なくともMに関してはCやVが無くても(ブラウザじゃなくても)テストできるって意味じゃないかな。
#plackは使ったことないから分からないけど、Cも作り次第でテストケース作れないことはないはず
0694nobodyさん
2010/11/21(日) 14:17:21ID:???C に M 置いちゃう?
0695nobodyさん
2010/11/23(火) 03:34:20ID:???・Cにビジネスロジックが書かれていない
・Mに書かれたビジネスロジックは全てスクリプトから呼び出せる
大雑把に言うとこんな感じ。用はブラウザを通してしか呼び出せないロジックを生み出さないようにする。
>>693
確かにApache::TestやTest::WWW::MechanizeなどでCのテストも書けると言えば書ける。
でもそれらはLWPなどを使って、ブラウザからのアクセスを模してるだけなんだよね。
0697nobodyさん
2010/11/24(水) 03:17:12ID:???while($_ = <IN>){
chop;
print "$_";
}
close(IN);
ファイルの内容を1行ずつ読み込んで出力したいのですが出力できません
行入力演算子が効かないのか何なのか、原因がよくわかりません
どうしたらいいでしょうか?
0698nobodyさん
2010/11/24(水) 04:56:07ID:???open(IN, "po.txt"); でイイヨ
ていうかなんで "+>>" なんか使ってんだ?
0699697
2010/11/24(水) 05:07:13ID:???読み書き両方出来た方がいいと思って+>>付けていました
ありがとうございました
0700nobodyさん
2010/11/24(水) 05:36:30ID:???どう違うのかは参考書を見るなりして自分で調べるダヨ
0701nobodyさん
2010/11/24(水) 09:25:00ID:???中身は消さないで欲しくて、でもappendじゃ困るというときに使える
のがないんだよなw 結局sysopenのお世話になるしかないという...
0702nobodyさん
2010/11/24(水) 15:21:47ID:???どういう状況でそんなオープンの仕方が必要になるのかよくわからんが、たとえば
my $filename = "foobar.txt";
open my $fh, -f $filename ? '+<' : '+>', $filename or die $!;
みたいなのでいいんじゃね?
0703nobodyさん
2010/11/24(水) 15:57:56ID:???むかしCGIのアクセスカウンターを自作しようとして困ったんだよね。
その方法だと-fとopenがatomicじゃないので運悪いと書いたのが消えちゃう。
結局'+>>'で開いてとじてから'+<'とかやったっけ。なんか無駄っぽいなーと
思ってすごい嫌だった記憶が。
0704nobodyさん
2010/11/24(水) 16:56:30ID:???0706nobodyさん
2010/11/24(水) 17:13:21ID:???排他制御したいんだったら結局flockなり使わないとだめなんでは。
'+<'でも排他的にopenはできないでしょ。
同時に2つ以上のプロセスから'+<'でopenされて書き換えられたら、
内容が消えることはないとしても本来の値と食い違う可能性があると思うが。
そこらへんはsysopenでも同様なんでは。sysopenだと排他的にopenできたりすんのかな。
>>704
あるファイルに対して読んだり書いたりを同時にしたい時に使う。
おいらも使ったことない。
0707nobodyさん
2010/11/24(水) 17:43:05ID:???更新の必要があるログを開く時
< で読み込んでも、更新しようとする時一々閉じてから開かなきゃいけないでしょ?
+< で開いておけば、seek するだけで書き出しできる。
アクセスが少なくて DISK IO が少ないなら、いったん閉じて開いてもいいとは思うけど・・・
0708nobodyさん
2010/11/24(水) 18:11:30ID:???当時は +< で開いた後さらににflockしてました。
sysopenというのがあるというのを知ったあとは、
sysopen FH, 'file', O_RDWR|O_CREAT|O_EXLOCK
で一発でできて感動したものです。
今だとDB使っちゃいますけどね。
0709nobodyさん
2010/11/24(水) 18:31:11ID:???0710nobodyさん
2010/11/24(水) 18:50:39ID:???プロセス1、ファイルが存在しないと判別
プロセス2、ファイルが存在しないと判別して作成してflockまで行う
プロセス1、ファイルが存在してなかったから作成(プロセス2によりロック中)してデータ壊れる
これで壊れないか?
0711nobodyさん
2010/11/24(水) 18:52:42ID:???DBと同様なトランザクションの仕組みって
perlで可能なの?
0712nobodyさん
2010/11/24(水) 18:58:55ID:???0716nobodyさん
2010/11/24(水) 20:03:34ID:???まあ"DBと同様のトランザクション"は実現できるんじゃないかと。
必要な機能だけに絞って実装すればいいんだし。
インタフェースも別にSQLに準拠しなくても好きなように設計すればいいし。
DBでflockによる排他処理とか面倒なことを考えなくていいのは
DBが単独で一手に集中してそのへんを引き受けてるからで、
片や複数プロセスが素のファイルにアクセスする時にflockとかで排他処理をするのは、
競合しないよう一手に引き受けてくれるまとめ役(交通整理役、管理役)がいないからで、
だったらデータの面倒を集中的に見てくれる、独立して動作するプログラムをperlで書いて、
複数プロセスからのデータのアクセスはそいつを介してやるようにすればいい訳で、
それはつまりperlでDBシステムを書くってことになる訳で。という話。
といっても実際に作ったことがある訳じゃないんで具体的にどう作るかとかは
実際に作ってみないとわかりません。
0717nobodyさん
2010/11/24(水) 20:17:47ID:???初心者の洞察でスマンが
とあるプロセス
my $flagfile="locked";
while(!do{ open my $fh,">",$flagfile; close $fh; }) {}
# ファイル処理
unlink $locked;
別のプロセス
my $flagfile="locked";
while (-e $flagfile) {}
# ファイル処理
0719nobodyさん
2010/11/24(水) 20:30:06ID:???別に俺には同でもいい話なんで、思いつきを書いたまで
どこらへんが残念で、なぜだめなのか、説明できるかい?
さすがにそこまで俺は深入りする気はない、すまんね
0720nobodyさん
2010/11/24(水) 20:43:12ID:???とりあえず簡単な例として、「別のプロセス」が「ファイル処理」を
開始してから終わるまでの処理中に「とあるプロセス」が動き出したら
2つのプロセスが一緒に処理してぶつかっちゃうだろ。
0721nobodyさん
2010/11/24(水) 20:54:11ID:???多少の遅延が許されるなら
while(!do{ open my $fh,">",$flagfile; close $fh; }) {}
の直後にsleep関数かませばよくね?
0722nobodyさん
2010/11/24(水) 21:13:49ID:???書こうとした事を先に書かれた orz
「まとめ役が居ないから」
これに限る。
全てのファイル操作を一手に引き受ける Apache モジュールを作って、
全ての CGI/モジュールは ファイル操作を受け持つ Apache モジュール経由で
操作すれば OK
そうすれば DB を使わないスクリプトとかでも完全なファイルロックが可能。
そのモジュールにバグが無ければだけどw
0723nobodyさん
2010/11/24(水) 22:54:58ID:???> while(!do{ open my $fh,">",$flagfile; close $fh; }) {}
このopenて、毎回必ず成功するか毎回必ず失敗するか、しかないよ。たぶん。
必ず失敗するとしたらファイルのパーミッションで弾かれるとかくらい。(他にもあるかな?)
だからwhileで「closeが成功するまで繰り返す」てのは意味ない。
まあ仮にこれで「ファイル使用中ですよ」宣言ができたとして、
前者のプロセスと後者のプロセス、それぞれ同時に1つのプロセスしか起動しないとしても
タイミングによってはまったく排他処理できない。
上のプロセスをA、下のプロセスをB、としてそれぞれ行番号つけてみる。
A1: my $flagfile="locked";
A2: while(!do{ open my $fh,">",$flagfile; close $fh; }) {}
A3: # ファイル処理
A4: unlink $locked;
B1: my $flagfile="locked";
B2: while (-e $flagfile) {}
B3: # ファイル処理
(続く)
0724nobodyさん
2010/11/24(水) 22:56:39ID:???AのプロセスとBのプロセスは同時に任意のタイミングで動作するわけだから、
もしも次のような順番で処理が進むと…
B1: my $flagfile="locked";
A1: my $flagfile="locked";
B2: while (-e $flagfile) {}
A2: while(!do{ open my $fh,">",$flagfile; close $fh; }) {}
B3: # ファイル処理
A3: # ファイル処理
A4: unlink $locked;
B2の段階でA2のロックはかかってないので、プロセスBは次にB3の処理に入る。
その直前にプロセスAがA2でロックをかけても、プロセスBはそれに気づかない。
で、プロセスAのファイル処理(A3)とプロセスBのファイル処理(B3)が同時に(交互に)走って、
結果がわやくちゃになる、と。
どのプロセスも、自分以外のプロセスがロックをかけてないかチェックする必要があるし、
自分のプロセスが使用中なことを他のプロセスに知らせる(ロックをかける)必要がある。
そして、その時に上の方にでてきた「atmic」な処理が必要になるんだな。
つまり、ロックをチェックする処理とロックをかける処理を、OSのマルチタスク処理で
細切れにされないようにまとめて(一気に)やらないといけない。
それが可能な手段はflockやsymlinkやmkdirや、sysopenのO_EXLOCKなど、限られている。
という訳で >>721 のsleepかます処理は全く意味がないんだった。
0725nobodyさん
2010/11/24(水) 23:50:30ID:???Windows用のPerl5.8で確認してみたけどsleep(1)をそれぞれのwhile文の後に
かますとちゃんと動作するようだよ
確認してみた?
0726nobodyさん
2010/11/25(木) 00:19:03ID:???sleepかまさなくても不都合なく動作する時は動作するし
(ていうかプロセス数が少なく処理のタイミングがまばらなら大抵の場合は問題ないだろう)
sleepかましてもカチ合ってうまくいかない時はうまくいかない。
それだけのことでしょ。
逆になんでsleepかますとうまく動くのか説明してくれ。
0727nobodyさん
2010/11/25(木) 00:27:18ID:???と思ったけど?
0728nobodyさん
2010/11/25(木) 00:30:56ID:???最初たまたまうまくいくことがあるが、すぐにどちらかのプロセスがアクセス権を独占する
0729nobodyさん
2010/11/25(木) 00:52:31ID:???そりゃたぶんどちらかじゃなくて上の方のプロセスがいつも独占するんだろう。
おそらくそれぞれの処理をwaitを置かずに無限ループ内でひたすら繰り返すような検証スクリプトを書いたんじゃないの。
1秒もsleep入ってるんだから、それぞれ処理時間が1秒以内に完了する程度の量なら、
うまく相互の起動のタイミングが合えば延々走り続けるだろうな。
ただループを回る時間に両者で少しでも差があれば、
いつかは上の方のプロセスが処理を独占するようになる。
ループ1回につき1秒ずつ遅延があるから、そうなるまでだいぶ待たないといけんだろうけど。
0730nobodyさん
2010/11/25(木) 01:02:48ID:???いや、正確に言うとごく短時間のウエイト処理を置いた
その処理時間ではアクセス権を譲渡しきれなかった
というか、要するにウエイト時間を長くしていけばうまくいくという理解でいいのかな?
もう、これ以上この件に関わるの疲れてきたんだけど・・・
0731nobodyさん
2010/11/25(木) 01:11:03ID:???> というか、要するにウエイト時間を長くしていけばうまくいくという理解でいいのかな?
違う。ちゃんと排他制御をしないと結局のところ解決はしない。
ウェイト(sleep時間)を長くすればするほど、カチ合う確率は低くなるだろうけど、
確率が低くなるだけでカチ合わなくなる訳ではないのだ。
まあ「1秒」ってコンピュータの処理速度からしたらものすごーく長い時間だけどさ。
> もう、これ以上この件に関わるの疲れてきたんだけど・・・
おつかれさま。おやすみ。気が向いたら排他制御の仕組みをきちんと勉強してみてね。
0732nobodyさん
2010/11/25(木) 01:14:16ID:???追伸。「sleepを入れることでアクセス権の譲渡が間に合うようになる」という解釈は間違っているので、念のため。
0733nobodyさん
2010/11/25(木) 01:17:43ID:???0734nobodyさん
2010/11/25(木) 02:05:15ID:???>>705
Vはいいとして、
Cが遷移とかWeb関係、
MがWebじゃなくても使いまわせるロジック
乱暴だけど、MにORMだとかDBだとかを単純に対応付けるよりかはマシな説明だと思う。
0735676
2010/11/25(木) 09:57:28ID:???コード晒してみて良いでしょうか。
細かい点はさておいて、MVC的に合ってるのか確認したいのです。
肝心のモジュールの中身が一番いい加減だとは思うのですが・・・
改行数の都合上、色々と端折ります。
use CGI;
use My::Module; # My::Definitionを継承、ret_xxxxメソッドが該当
use My::Session;
my $session = My::Session->new();
my $sess = $session->chk_session; # if session expired, return undef.
if (!$sess) {
$session->loginForm;
} elsif ($sess) {
my $q = CGI->new();
my $param1 = $q->param('param1');
my $mod = My::Module->new();
my $tx = $mod->ret_Xslate;
my $dbh = $mod->ret_DBI;
if (!$param1) {
my $contents = $tx->render( 中略 );
print $contents;
} else {
# 大きく中略。$returnを取得するSQL文を書いてる。
my $contents = $tx->render("hoge.tmpl", {
title => "fuga",
value => $return;
});
print $contents;
}
}
0736nobodyさん
2010/11/25(木) 21:42:32ID:???0737nobodyさん
2010/11/25(木) 23:00:23ID:???0738nobodyさん
2010/11/26(金) 00:07:31ID:???># 大きく中略。$returnを取得するSQL文を書いてる。
例えばこの$returnは仮に foo($param1) という呼び出しで取れるとして、
$param1がフォームからの入力値である必要は無く
コマンドラインから呼び出して foo($ARGV[0]) としても正しく動くわけで、
foo()はコントローラには無くてもいいよね。
#そう切り分けることを>705でモジュールと呼んでたのなら近い認識かも知れない
余計なお世話だけど if(!$param1) だと $param1 に "0" が入った時も真判定されるので
if ($param1 ne "") という意図ならそのように書いた方がいいよ。
0739nobodyさん
2010/11/26(金) 01:03:21ID:???param('param1') は、param1というパラメータ自体が無かった場合はundefを返し、パラメータはあるが値が無かった場合は空文字列になる。
だから ne "" は正しくなく、「動く」のを優先するなら735のままで実は正しい。ただしたまたま動いているだけなので、ちゃんと書くならdefinedを使う。
if (not defined $param1)
あと$param1がundefだった場合に ne を使うとuninitializedのwarnが出る。
0740nobodyさん
2010/11/26(金) 02:02:18ID:???0741676
2010/11/26(金) 03:18:48ID:???>>705はM - モジュールというより、M - モジュール化という方が近かったですね。
ちなみに、今現在$returnを取得するのは、各スクリプト内固有のSQLなので、
スクリプト間でSQLに重複があれば、モジュールに放り込もうとは思っています。
>>738-739
実はここ、
> my $sess = $session->chk_session; # if session expired, return undef.
の、「return undef.」はウソで、実際には1 or 0を返しています。
if ( not defined $sess )とすると、全てのセッションが通る・・・
param1のケースを考えると、
× return 0;
○ return undef; # or return;のみ
とした方が良さそうですね。
色々とありがとうございました。
0742nobodyさん
2010/11/26(金) 16:52:51ID:???>$ua = LWP::UserAgent->new;
0743Perl忍者 ◆M5ZWRnXOj6
2010/11/26(金) 17:17:16ID:pwS23Ki10746nobodyさん
2010/11/26(金) 17:45:18ID:???自作のショッピングカートプログラムにクレジットカード決済機能をつけたい。
その為には、決済代行業者のプログラムに接続しなきゃならない。
できるか?
0749nobodyさん
2010/11/26(金) 18:31:10ID:???my $ua = LWP::UserAgent->new;
って同じなん?
0750nobodyさん
2010/11/26(金) 19:50:57ID:???俺だよオレ俺
0751nobodyさん
2010/11/26(金) 20:12:08ID:???必ずしも決まった形ではないようだね。
0752nobodyさん
2010/11/26(金) 20:35:45ID:???曖昧さがあってときどき期待しない解釈をされてわかりにくい
バグの元だから矢印だけを使う方がいいとperlobj(1)に書いて
あるよ。
0753nobodyさん
2010/11/26(金) 21:21:45ID:???0754Perl忍者 ◆M5ZWRnXOj6
2010/11/26(金) 21:49:28ID:pwS23Ki1あと外部プログラムにつないだりできるよ
0755Perl忍者 ◆M5ZWRnXOj6
2010/11/26(金) 21:52:42ID:pwS23Ki1オブジェクトの理解でつまってるってほんと終わってるねw
0756nobodyさん
2010/11/26(金) 22:57:56ID:???は
my $ua = LWP::UserAgent->new;
のシンタックスシュガー、だっけ?
0757nobodyさん
2010/11/26(金) 23:30:39ID:???0758nobodyさん
2010/11/26(金) 23:47:19ID:???print $fh
0760nobodyさん
2010/11/27(土) 03:55:49ID:???0761nobodyさん
2010/11/27(土) 04:38:13ID:???「とあるPerlの糖衣構文(シンタックスシュガー)」
思ったよりつまらんな
0763なるとくん
2010/11/27(土) 19:43:14ID:40qrjSo/0765nobodyさん
2010/11/28(日) 00:44:24ID:???0767nobodyさん
2010/11/29(月) 05:53:06ID:???@list = (a,b,c,……);
$length = @list;
<script language="javascript">
for(i = 0; i<$length; i++){
…
#このfor文の中で
# $list[i] を使うとエラーになり、
# "$list[i]"だと参照できますがインデックスのiがインクリメントせず最初の要素aが繰り返し参照されます。インクリメントしてほしいです
…
}
どうしたらいいでしょうか?
0768nobodyさん
2010/11/29(月) 06:20:49ID:???0769nobodyさん
2010/11/29(月) 06:32:34ID:???perl側の配列を使いたい、ということ?
でもperlで作った配列はJavaScriptからは当然見えっこないんだから
JavaScript側にもperlの@listと同じデータ列の配列を定義しておいてやらねばいけないんでは
### perlコード
my @list = (1, 2, 3);
# @list = (a, b, c) は変じゃないか? ("a", "b", "c") ならわかるけど…
my $js_array = join ', ', @list;
# @listの内容が文字・文字列の場合はこうかなちょっと冗長だけど
# my $js_array = join ', ', map "'" . $_ . "'", @list;
### JavaScriptコード
print <<EOT;
<script type="text/javascript">
list = new Array($js_array);
for (i = 0; i < list.length; i++) {
document.write(list[i]);
}
</script>
EOT
それとも JavaScript のループ内で、JavaScriptの配列の添字 (i) を使って
Perl の側の配列 (@list) の要素を取り出したいということ?
しかしその場合そもそもJavaScriptのコード側がforループになっている必要あるの?
Perl側の段階でforeach等でループ処理するべきなんでは
0770767
2010/11/29(月) 07:16:51ID:???中身も書くべきでしたね
すみません
>>769
joinでまとめて変数に入れれば良かったのですね
配列として使いたかったので助かりました
ありがとうございます
0771676
2010/11/29(月) 13:13:48ID:???BはCに戻る方が正しいかもしれませんが・・・
http://ichigo-up.com/cgi/up/qqq/nm28196.png
0772nobodyさん
2010/11/30(火) 00:10:19ID:???以下の方法でreadしても、何も入っていません。
if ($ENV{REQUEST_METHOD} eq 'POST') {
read(STDIN, $read_data, $ENV{'CONTENT_LENGTH'});
}
別ページへPOSTした場合は、受け取ることができたのですが…
CGI.pmが使えない環境で、別に何か方法はありますか?
0773nobodyさん
2010/11/30(火) 00:20:25ID:???0774nobodyさん
2010/11/30(火) 01:23:19ID:???何故か強力なキャッシュが働いてるか・・・
なんとも言えん
0776772
2010/12/01(水) 01:26:55ID:???...
read(STDIN, $read_data, $ENV{'CONTENT_LENGTH'});
と書いてたのがreadが空だった原因みたいです。
my $read_data;に修正したらreadできるようになりました。
または、readを削って、my $read_data = <>;だけでも読めました。
ダイアモンド演算子を訳もわからず使ってました。
0778nobodyさん
2010/12/01(水) 02:23:15ID:???ここを参考にやってんだけど、データベースに接続できないorz@MySQL 5.1.41
DBD は CPAN じゃなくて ppm で拾ってきたものを使用
0779nobodyさん
2010/12/01(水) 02:31:06ID:???show grant for tester@localhost;
GRANT ALL PRIVILEGES ON *.* TO 'tester'@'localhost' IDENTIFIED BY PASSWORD '*****'
GRANT ALL PRIVILEGES ON `testdb`.* TO 'tester'@'localhost'
perl から connect('DBI:mysql:testdb:localhost' , $username, $password); ってすると、
Can't connect to MySQL server on 'localhost' (10061)
ってなる。
むぅ。。。
0782nobodyさん
2010/12/01(水) 23:41:40ID:???print <<EOF;
<?PHP
print "Content-type: text/html\n";
$G='0';
if($G==1){$G3=1;}
else if($G==2){$G3=2}
?>
EOF
こうしてみたらContent-type: text/htmlだけがテキスト出力されるのだけどどうしたらいいのかな?
0783nobodyさん
2010/12/01(水) 23:59:03ID:???これはPerlとPHPのコードが混じってるの?
どういう動きを期待してるのか分からない。
もしPerlスクリプトの一部分を新規のPHPプロセスで呼び出そうとしてるとか
Perlの出力結果をPHPソースコードとして見て改めてPHPで実行する(またはその逆)とか
そういう事なら余計重くなるだろうね。
PHPスクリプトを動的に作ってドキュメントルート以下にphpファイルとして書き出すなら分からなくもないけど。
0784nobodyさん
2010/12/02(木) 00:38:59ID:???Content-type: text/html\n\n
を出力するのはperl(CGIスクリプト)側の仕事だろう。
で、PHPコード中でいじってる$Gや$G3はどこで使ってるの?
Perlスクリプトで参照してるんだったら全く意味がない。
あとPHPでelse ifを書く時はの表記は「elseif」。
0785nobodyさん
2010/12/02(木) 00:56:20ID:???0786nobodyさん
2010/12/02(木) 01:01:43ID:???まあなんにしても何がやりたいのかまったくわからんわけだが
0787nobodyさん
2010/12/02(木) 03:03:55ID:???CGIが走ってる最中にPHP文書いたからってモジュールモードで動くのか?
・・・仮にそうだとしてもifひとつで差が出るとは思えんが
というか逆に遅くなりそうだが
0788nobodyさん
2010/12/02(木) 04:23:37ID:???となるとContent-type: text/htmlが表示されたっていうのはどういうことなんだ?
0789nobodyさん
2010/12/02(木) 06:58:59ID:???0790nobodyさん
2010/12/02(木) 11:22:29ID:???$w = 0;
$h = 0;
$t = 0;
@we = ();
@he = ();
@tr = ();
for($i = 0;$i <= 6;$i++){
if(${'item'.$i}[1] = 0){
$we[$w] = "@{'item'.$i}";
$w++;
}
elsif(${'item'.$i}[1] = 1){
$he[$h] = "@{'item'.$i}";
$h++;
}
else{
$tr[$t] = "@{'item'.$i}";
$t++;
}
}
item.txtには各行に @item(数字) = ("文字列",0〜2の数字,0〜2の数字); の配列が入っています
2つ目の数字の要素で各配列を3つの配列@we,@he,@trに振り分けたいのですが、要素の数字によらず全て@heに入ってしまいます
文字列の要素のせいでif文のイコールがブール値を求めているのか、(${'item'.$i}[1] = 1)の右辺が0以外の時に条件を満たすようです
そして何故か右辺のオペランドが${'item'.$i}[1]に代入されています
( (${'item'.$i}[1] = "A")なら@heの各要素が("文字列","A",数字)になります)
どうしたらいいでしょうか?
0792nobodyさん
2010/12/02(木) 14:15:19ID:???0793nobodyさん
2010/12/02(木) 15:20:54ID:???0794nobodyさん
2010/12/02(木) 15:33:12ID:???0795790
2010/12/02(木) 16:56:40ID:???失礼しました
0797nobodyさん
2010/12/02(木) 17:09:49ID:???今は知らん。
0799nobodyさん
2010/12/02(木) 17:44:16ID:???0800nobodyさん
2010/12/03(金) 00:17:39ID:???if $cnt <> 0 then
else
endif
だったような
個人的には 「then」 ってなんか好きw
0801nobodyさん
2010/12/03(金) 01:10:22ID:???IF A <> 0 THEN GOSUB 1000 ELSE GOSUB 2000
とかそんな感じだったような。ENDIFはなかった。
完全にスレ違いだな。すまん。
0802nobodyさん
2010/12/03(金) 07:07:22ID:???endifなんて無かった。
0803nobodyさん
2010/12/03(金) 10:37:46ID:???for文の中で、ループ内容を1項目だけ追加させたい場合はどうしますか?
$start=5;
$end=9;
for ($start..$end) {
##$data[$_]にabcが含まれてたらループを1つ追加
if ($data[$_] =~ /abc/i) {
$end++;
}
##$data[$_]を書き出し
print $data[$_];
}
ってやってもダメでした。
0804nobodyさん
2010/12/03(金) 10:56:43ID:???0805nobodyさん
2010/12/03(金) 11:07:30ID:???0806nobodyさん
2010/12/03(金) 11:33:54ID:???掲示板(CGIのページ)にモバイルアドセンスを表示したいんですけどうまく表示できません・・・
どこをいじったら良いのでしょうか?
下の掲示板を利用してます。PCには表示できますがモバイルにはどうしても
無理です。
http://www.kent-web.com/bbs/epad.html
ptel.plにモバイルアドセンス(CGIコード)を書きましたがエラーになります。
携帯からアクセスしたさい、一番上にアドセンスが表示されてれば
問題ないです。
宜しくお願いします。
0807nobodyさん
2010/12/03(金) 11:50:43ID:???【 スクリプト改造依頼スレ】(丸投げ) part7再々
http://hibari.2ch.net/test/read.cgi/php/1222645553/
★三 【 スクリプト改造工房 PART 9 】 ★三
http://hibari.2ch.net/test/read.cgi/php/1143834740/
0808nobodyさん
2010/12/03(金) 15:45:42ID:???0809gfx
2010/12/03(金) 20:37:49ID:???0810gfx
2010/12/03(金) 20:41:32ID:???http://d.hatena.ne.jp/gfx/
Perl忍者君に誘われて2chデビューしましたw
0811nobodyさん
2010/12/03(金) 21:04:26ID:???本人ならハテダに2chデビューしましたって書いてみてくれよ。
0812nobodyさん
2010/12/03(金) 21:04:42ID:???IRCでキチガイに触れてしまったばかりに…
0813nobodyさん
2010/12/05(日) 00:07:53ID:???0814nobodyさん
2010/12/05(日) 17:11:31ID:???さっさと捨てろ
0815nobodyさん
2010/12/08(水) 17:33:34ID:???use utf8; はしてません。
これ自体はちゃんと表示できてるのですが、ファイルを読み込むときに明示的に utf-8 だと指定した方がいいかな?と思い、
ファイルを読み込むときに <:utf8 とすると、読み込んだデータはちゃんと表示されますが、
スクリプトの中に直接書いて表示してる全角文字がすべて文字化けしてます。
'<:utf8' ではなく '<' で読み込めば、文字化けせずすべてちゃんと表示されます。
use utf8; してみましたが状況が変わりません。
binmode STDOUT, ":utf8"; としても駄目でした。
ファイルを読み込むときに <:utf8 を指定しつつ、スクリプトに書いた全角文字が文字化けしない方法ってどうやるんでしょう?
0816nobodyさん
2010/12/08(水) 17:51:37ID:???一箇所でも <:utf8 とか binmode STDOUT, ":utf8" ってやるとスクリプト全体 (use とか require するもの) に影響する。 って感じかな?
0817nobodyさん
2010/12/08(水) 17:59:53ID:???0818nobodyさん
2010/12/08(水) 20:12:49ID:???一方use utf8;しないで書いてるからスクリプト中のutf8文字コードは生のutf8コードのまま。
その両者を混ぜてしまうから化ける。
ってことじゃないだろうか。
0819nobodyさん
2010/12/08(水) 20:33:41ID:???perlio
> :utf8
> Declares that the stream accepts perl's *internal* encoding of characters.
0820nobodyさん
2010/12/08(水) 20:49:34ID:???生のUTF-8nコードでは 0xe6、0x84、0x9bの3バイトだが、
Perlの内部コードでは0x611b。
前者を split // すると (0xe6, 0x84, 0x9b) ができる。単なる3バイトのデータ列としての扱い。
後者を split // すると (0x611b) ができる。内部コード0x611bの「愛」という(splitできない)1文字としての扱い。
0821nobodyさん
2010/12/08(水) 21:53:27ID:???文字化けする理由が >>820 でなんとなく分かった。
が、フラグを立てる理由というか使い道が分からない。
フラグを立ててれば半角全角関係なく文字数が簡単に分かる (ですよね?) とか、そうゆう利点だけな気がしてならないもんで・・・
0822nobodyさん
2010/12/08(水) 22:05:28ID:???文字数が簡単にわかるだけでなく、各文字の区切り(境界)を意識しないで文字列処理ができる。
ShiftJISコードでの文字処理・文字列処理は面倒だったなあ…(遠い目)
その代わり場合によっては文字コード変換時に一部記号などが化けることがあったりとか
別の厄介事も若干発生しているけど、まあそのへんは仕方ないかね。
0823nobodyさん
2010/12/08(水) 23:05:01ID:???フラグを立てるというか実質的に変換処理が走ってると思った方が分かりやすいはず
メリットで大きいと思うのは文字列として正しくない並びのバイト列を弾けること
0825nobodyさん
2010/12/09(木) 18:22:44ID:???while ($html =~ /([-.\w]+@[-.\w])/g)
{ push(@list, $1); }
とやると固まりました。無限ループかもしれません。
どうやったらやりたいことができるでしょうか?
0826nobodyさん
2010/12/09(木) 18:27:51ID:???0827nobodyさん
2010/12/09(木) 18:31:53ID:???0828nobodyさん
2010/12/09(木) 18:45:33ID:???push(@list, $1);
}
$html を後々使うなら
my $html_bak = $html;
みたいにバックアップを。
0829nobodyさん
2010/12/09(木) 18:47:25ID:???同じ内容をひたすらマッチし続けてる
0830nobodyさん
2010/12/09(木) 19:20:57ID:???でできなかったっけ
0831nobodyさん
2010/12/09(木) 19:25:05ID:???0832nobodyさん
2010/12/09(木) 19:42:18ID:???0833826
2010/12/09(木) 20:03:56ID:???@list=($html =~ /([-.\w]+@[-.\w])/g);
>>828
$htmlが$mech->content()だったらどうってことないですよね?
>>829
してたと思います。確実にwhileで止まっていました。
>>831
しかし∞ループしてました。
@list=($html =~ /([-.\w]+@[-.\w])/g);
に入れ替えたとたんうまくいったので。
@list=($html =~ /mailto:([-.\w]+@[-.\w])/g);
としてもメルアドだけのリストができたんだけどどうしてですか?
0834nobodyさん
2010/12/09(木) 20:06:16ID:???0835nobodyさん
2010/12/09(木) 20:13:01ID:???それは真偽値がかえると勘違いしていました。
カッコが必要だと思っていました。正しいのですね。
$baa='abc@abc xyz@xyz 1a2b3c@4d5e';
my @foo = $baa =~ /([-.\w]+@[-.\w]+)/g;
print "@foo\n";
abc@abc xyz@xyz 1a2b3c@4d5e
0836nobodyさん
2010/12/09(木) 20:40:31ID:???実際に動かないコードではない別のコードを捏造して質問するとは駄目な質問者だ。
>>828は無限ループなどにならずにちゃんと機能したぞ。試してみたら。
ただタイプミスのせいで「メールアドレス」は取得し損なってるけど。
たぶん、元の動かないコードに別のバグがあったんだろう。
結局、真の原因はわからずじまいか。
0837nobodyさん
2010/12/09(木) 20:51:36ID:???while ではマッチしたかどうかの判断になるから無限ループになる。
0839831
2010/12/09(木) 21:07:45ID:???いや、whileの話のつもりだったんだけど。
while ( ここはスカラーコンテキスト ) { } だろ。
>>825も一応試したが普通に動いたぞ。
/g がなかったら無限ループだけど。
0840836
2010/12/09(木) 21:21:58ID:???そうだった。アンカーミスった。すまん。
>>839
だからたぶん、元のコードにバグがあって (/g のつけ損ねとか)
質問用に捏造した>>825のコードではバグのないコードを書いてしまったんだろう。
と推測する次第。そうだとすると最低な質問の仕方だよな、とプチ憤ってしまった。
0841nobodyさん
2010/12/09(木) 21:28:12ID:???思い込みじゃなくてテストしてみたらちゃんと動いた。
0842830
2010/12/09(木) 22:03:45ID:???0843nobodyさん
2010/12/09(木) 23:50:50ID:???そんなような理由なんだろうな、たぶん。
0844841
2010/12/10(金) 01:49:22ID:???でフェードアウト的な?
むぅ。。。w
while(/〜/g){ 〜 } がちゃんと回ってくれるっていう事を知れたので、
自分的には有用な流れだった。
0845nobodyさん
2010/12/10(金) 08:34:17ID:???TreeBuilderを使っているのですが、文字化けが微妙な頻度で発生しており
原因の検討が付かず困っています
何かアドバイスがありましたらお願いします
環境はWindowsXP Home、ActivePerl最新verです
以下ソースです
###################
use LWP::Simple;
use HTML::TreeBuilder;
use encoding qw(utf-8);
$uri = "http://blog.esuteru.com/archives/1866797.html";
$tempfile = "getstore.html";
getstore($uri, $tempfile);
my $tree = HTML::TreeBuilder->new;
$tree->parse_file("getstore.html");
for $attr($tree->look_down("class", "article-outer-3")){
$text = $attr->as_HTML('<>&', "\t");
print $text;
}
###################
続きます
0846845
2010/12/10(金) 08:35:50ID:???$uriでアドレス指定した某ブログのとあるエントリを「getstore.html」というファイル名でローカルに保存し、
それをTreeBuilderでエントリ部分だけを抽出して出力する、というものです
上記ソースを「test.cgi」、文字コードUTFで保存し、コマンドライン上で、
>perl test.cgi > test.html
と実行し、出力されたtest.htmlを文字コードUTF前提で開くと一部だけが文字化けしています(下記画像参照)
ttp://www.dotup.org/uploda/www.dotup.org1292408.jpg
当然ですが、元となるページ(ttp://blog.esuteru.com/archives/1866797.html)では該当部分は文字化けしていません
また、この現象は以下に挙げたごく一部にのみ発生し、同ブログ内の他の殆どの記事では何故か発生しません
ttp://blog.esuteru.com/archives/1841660.html
・バグの発生手順の部分2カ所
ttp://blog.esuteru.com/archives/1833321.html
・「(「明日のよいち!」「神のみぞ知るセカイ」他)」の担当者名(「脚本:橋龍也」の部分)
・「◆3DSスパ4」の箇条書きの一部
特定の文字、あるいは複数の文字の組み合わせで発生するような気がするのですが、
当方のスキルではこれが限界でした
思い当たる点ならば何でも結構ですので、アドバイスをお願いいたします
0847845
2010/12/10(金) 08:46:44ID:???発生状況のスクリーンショットです
> ttp://blog.esuteru.com/archives/1841660.html
> ・バグの発生手順の部分2カ所
ttp://up3.viploader.net/net/src/vlnet004648.jpg
> ttp://blog.esuteru.com/archives/1833321.html
> ・「(「明日のよいち!」「神のみぞ知るセカイ」他)」の担当者名(「脚本:橋龍也」の部分)
ttp://up3.viploader.net/net/src/vlnet004650.jpg
> ・「◆3DSスパ4」の箇条書きの一部
ttp://up3.viploader.net/net/src/vlnet004649.jpg
0849nobodyさん
2010/12/10(金) 10:56:09ID:???化けてる行のHTMLソースを見ると、?みたいな数値文字参照があるな。
これが関係していそうだな。
0850nobodyさん
2010/12/10(金) 10:58:22ID:???例えば「&#9314;」(←実際には半角)みたいな文字参照のある行で化けちょる。
0851nobodyさん
2010/12/10(金) 16:37:59ID:???use Encode::Alias;
define_alias( qr/s(hift.*)?jis$/i => '"cp932"' );
0852nobodyさん
2010/12/10(金) 16:52:56ID:???ソースは2chとかじゃなくて元からUTF-8のまとめブログか。じゃあ>>851は意味ないわ。
0853851
2010/12/10(金) 17:30:19ID:???とりあえず結論としては $tree->parse_file のかわりに
my $html = do { local $/; open my $fh, "<", $tempfile; <$fh> };
$tree->parse(Encode::decode_utf8($html));
とすればとりあえず期待通りに動く。
0854nobodyさん
2010/12/10(金) 19:49:59ID:???っていう部分があって、<img> を囲ってる <a> は残して、<a></a> となってるものだけ削除したいと思って
s/<a .*?><\/a>//gi
ってやったんだけど、<img> を囲ってる <a></a> まで削除されてしまいます。
s/<a .*?"><\/a>//gi
これだと意図する動き (<img> を囲う <a></a> は残す) になります。
EmEditor の正規表現検索で試したところ、Perl と同じ動きになりました。
s/<a .*?><\/a>//gi のどこが駄目なのか分かりません。。。
0855845
2010/12/10(金) 19:53:10ID:???回答の提示ありがとうございます
こちらでもうまく動作しているようです
自分の今のスキルではおそらくたどり着けませんでした…
0856nobodyさん
2010/12/10(金) 20:11:14ID:???0回目 <a href="〜"></a><a href="〜"><img src="〜〜〜"></a>
1回目 <a href="〜"><img src="〜〜〜"></a>
2回目
0857nobodyさん
2010/12/10(金) 21:32:40ID:???0858nobodyさん
2010/12/10(金) 21:48:20ID:???m{<a .*?></}で失敗するが
<a href="〜"><img src="〜〜〜">
m{<a .*?>}はマッチする
マッチするものの中で最短
0859nobodyさん
2010/12/10(金) 21:50:49ID:???>>856の「1回目」の場合 .*? にマッチするのは「href="〜"><img src="〜〜〜"」の部分ただ1箇所だけなんだからそこが消えるのは当然。
0860nobodyさん
2010/12/10(金) 22:15:43ID:???じゃぁ、自分がやろうとしてる 「.*?から一番最初に見つかった > まで」 を表現するとすると
<a [^>]*></a>
が正解ってところ?
0861nobodyさん
2010/12/10(金) 22:16:56ID:???<a から最初に見つかった > まで
だった
0862nobodyさん
2010/12/10(金) 22:52:33ID:???こういうのがありえないとわかっている場合や、あっても無視と決め込むなら>>860でいいと思う。
もし厳密にやりたいなら正規表現ひとつでやろうとしないでパーザなりを使うべき。
0863nobodyさん
2010/12/10(金) 23:15:31ID:???> が見つかったんだから、そこで止まれよ
とか思ってたんだけど、そもそも .*? の ></a> がマッチしてるじゃないかと。
ちょっと言葉では表現できないけど、自分の勘違いっていうか、思い込みから来る理解不可能状態に陥ってた。
ありがとん。
>>862
以前 HTML を整形してくれるモジュールがあって、そのモジュールがもの凄いメモリ喰らい (それこそ 数百メガ) で
perl が落ちるってのがあったので (たしかこのスレだったような気がするのだが・・・)、
モジュール使った場合と、自力で書く場合のコード量が少ない場合は自分で書くようにしてたりします。
0864nobodyさん
2010/12/11(土) 16:23:42ID:???こういう話が出てた記憶はあるけどパーサじゃなくて
(Win32環境の)LWPがなぜかくそ重いとかそういう相談じゃなかったかな。
暇つぶしにログ探してみる。
0865nobodyさん
2010/12/11(土) 16:33:48ID:???Perlコーディング初心者質問スレ Part 57
http://pc11.2ch.net/test/read.cgi/php/1203935151/32
0866nobodyさん
2010/12/11(土) 21:07:30ID:???p2 で過去ログあさるのめんどくさいなぁww
ちょっと探してみる
0867nobodyさん
2010/12/11(土) 21:16:11ID:???CGI::Pretty でテーブルを作成したときにメモリ使いまくって、CPU パワー持って言って 500 エラーを返す。 ってやつだった。
http://hibari.2ch.net/test/read.cgi/php/1149017548/136-
今は直ったのかなぁ?
0868nobodyさん
2010/12/11(土) 21:21:38ID:???128行のテーブルで試したら 130MB 使って 500 エラー
4年も経つのにw
まぁ、テーブルぐらいテメェで出力しろってことで。
0869nobodyさん
2010/12/11(土) 22:31:24ID:???わかります。
0870Perl忍者 ◆M5ZWRnXOj6
2010/12/11(土) 22:36:26ID:/agSJrihわかります。
0871nobodyさん
2010/12/11(土) 23:17:59ID:???0872nobodyさん
2010/12/12(日) 14:47:07ID:OtPTT+aF\qw{a b c}
としたらエラーになったので、
[ qw{a b c} ];
としたんですが、あってますか?
でもなんかしっくりこなくて。
0873nobodyさん
2010/12/12(日) 14:58:30ID:???ってぐらい正解でございますw
0874nobodyさん
2010/12/12(日) 15:55:33ID:OtPTT+aF0875Perl忍者 ◆M5ZWRnXOj6
2010/12/12(日) 17:11:01ID:GuB4bd3O0876nobodyさん
2010/12/14(火) 20:11:41ID:???以下のコードのrecvで失敗します。
while (<$sock>)を使うと文字列は読めるのですが、
バイナリデータが読めてなさそうなので、recvに変更したところ
うまくいきません。何か問題がありますか。
my $sock;
socket($sock, PF_INET, SOCK_STREAM, getprotobyname('tcp'));
my $remote_host = 'localhost';
my $packed_remote_host = inet_aton($remote_host);
my $remote_port = 22222;
my $sock_addr = sockaddr_in($remote_port, $packed_remote_host);
connect($sock, $sock_addr);
my $res;
print $sock "Hello";
shutdown $sock, 1;
recv($sock, $res, 100, 0);
close $sock;
0877nobodyさん
2010/12/14(火) 21:47:07ID:???0878Perl忍者 ◆M5ZWRnXOj6
2010/12/14(火) 22:44:39ID:3UzhxS910879nobodyさん
2010/12/15(水) 12:41:57ID:???http://d.hatena.ne.jp/perlcodesample/20090406/1238902770
shutdownを外したらrecvでブロックするようになった。
wiresharkで見ると何か飛んできてるんだけどなあ。
0880nobodyさん
2010/12/15(水) 12:55:00ID:???0881nobodyさん
2010/12/15(水) 15:16:11ID:VvPjVUom0882nobodyさん
2010/12/15(水) 15:32:33ID:???perl処理系のソース読んでスカラーをどう保持してるか
調べてみるといいよ。
0883nobodyさん
2010/12/15(水) 16:40:46ID:VvPjVUom文字列か数値かを判断する方法はないでしょうか?
Devel::Peek でフラグを見る方法だとちょっと大げさすぎるかなと思うので
なにか良い方法はないでしょうか?
最初 +1-1 してチェックできるかなと思ったのですが perl だと意味無いですしね・・
0884nobodyさん
2010/12/15(水) 18:31:17ID:???通常区別する必要がないから組込関数のような形で用意されていないのであって、
必要に感じるのならそれは他の言語の流儀をPerl上でも押し通そうとしているからだ。
どうせ使う前には汚染除去やバリデートをするんだから、単純な整数なら
$num = $num =~ /^([0-9]+)$/ ? $1 + 0 : 0;
のようにチェックのついでに数値化するだけだし、ある文字列が数値として適切に
解釈可能かどうかを調べたいなら Scalar::Util::looks_like_number() がある。
0885nobodyさん
2010/12/15(水) 21:17:32ID:VvPjVUom渡したいのでなんか楽に軽く判別する方法ないかな〜なんて・・・。
YAMLやJSONとかのモジュールの正常性テストとかにも使いたいなとか。
0886nobodyさん
2010/12/15(水) 22:11:31ID:???0887nobodyさん
2010/12/15(水) 23:23:42ID:???0888nobodyさん
2010/12/17(金) 16:39:29ID:???my $str1 = "あ";
my $str2 = "い";
print "$str1$str2";#・・・A
print $str1 . $str2;#・・・B
0889nobodyさん
2010/12/17(金) 17:36:30ID:???実行環境と渡す内容によるし、繋げずに渡してもいい。
print $str1, $str2;
強いて言うなら、特定の条件下でカリカリにチューニングしたいわけでないなら
「読みやすいように」書くといい。
0891nobodyさん
2010/12/18(土) 00:07:20ID:qL35dvRo2、テキストタイプのinputで数字をname="number"で受け取り
cgiで<frame>のタグを繰り返すという内容にしたつもりです。
(内容は下記の状態になってます。)
3、しかし、実行結果のページでは何も表示されません。
何がいけないのかご指摘お願いします。
read(STDIN,$str,$ENV{"CONTENT_LENGTH"});
$str=~tr/+/ /;
$str=~s/%([0-9A-Fa-f][0-9A-Fa-f])/pack("c",hex($1))/eg;
foreach (split(/&/,$str)){
my ($key,$value)=split(/=/,$_);
$input{$key}=$value;
}
$height=100/$input{number};
print "<html>\n";
print "<head><title>first_result</title></head>\n";
print "<frameset rows=\""."$height%,"x($input{number}-1)."$height%\">\n";
for($n=0;$n<$input{howmany};$n++){
print "<frame src=\"second_part.html\" name=\"second\">\n";
}
print "</frameset>\n";
print "</html>\n";
0892nobodyさん
2010/12/18(土) 04:56:26ID:???0893nobodyさん
2010/12/18(土) 05:40:58ID:???せめて use strict; くらいは使おうぜ
0894Perl忍者 ◆M5ZWRnXOj6
2010/12/18(土) 14:12:29ID:lZZb3And0895nobodyさん
2010/12/18(土) 22:45:42ID:eFFNyC2E以下のソースを実行しているのですが…
#========
my $text = "10a|10b|10c";
$text =~ /(10.)/g;
print $1;
print $2;
print $3;
#========
「"10"で始まり、その次の1文字まで含めた値」を全て取得したいのですが、
出力されるのは何故か$1だけで、$2以下は「Use of uninitialized value」とエラーが出てしまいます
マッチした部分は特殊変数$1、$2、$3…と順次格納されると考えていたのですが…
どの部分がおかしいのでしょうか?
0896nobodyさん
2010/12/18(土) 23:05:25ID:???パターン内にあるキャプチャ用のカッコが1つだけだから $2 以降は使われないよ。
my @matches = $text =~ /(10.)/g;
print "@matches\n";
こんな風に配列に入れたらどうかな。
0897nobodyさん
2010/12/18(土) 23:12:09ID:eFFNyC2E自分の正規表現の理解が間違っていたようです
配列で取得する必要があったのですね
ありがとうございました
0898nobodyさん
2010/12/19(日) 01:56:11ID:???while($text=~/(10.)/g){print $1;}
以上蛇足
0899nobodyさん
2010/12/19(日) 17:16:51ID:???0900nobodyさん
2010/12/20(月) 04:07:28ID:???速度的には「,」繋ぎが速いらしいね
""でくくると変数の範囲をチェックするし、「.」で繋ぐと変数の中身を判断するんで、その分遅くなるのだそうな
0901nobodyさん
2010/12/20(月) 12:51:46ID:klkFZZbWその中で文字列を生成→出力と単純な処理を行っているのですが、文字列がある一定の長さを
越えた辺りで、iso-2022-jpで出力するとその長さ前後の数文字だけ\b{xxxx}の形に文字化けします。
eucやutf8で出力すると、化けません。
また、適当な長さのところに改行を入れると、iso-2022-jpでも文字化けしません。
これってどういう現象なのでしょうか..解決先を御存じ、または同じ現象に遭遇した方いらっしゃいますでしょうか。
0902nobodyさん
2010/12/20(月) 12:57:22ID:klkFZZbWすいません、化け方は\x{xxxxx}の間違いです。やはり直前の改行以降300文字前後で化けます。
0903nobodyさん
2010/12/20(月) 13:06:16ID:klkFZZbW実験にこんなプログラムを書きましたが、再現しました。340文字で改行するとOKでした。
#!/usr/bin/perl
use strict;
use Encode;
use utf8;
binmode STDOUT,":encoding(iso-2022-jp)";
my $x;
for(my $i = 0; $i < 1000;$i++){
$x .= "あ";
}
print $x . "\n";
0904nobodyさん
2010/12/20(月) 14:28:44ID:???手元のlinux上の5.10.1で動かしてみたが別に変なことはないけどな。
プログラムは特になんの変哲もないから、現象が本当ならなにかの
バグぐらいしかおもいつかない。バージョンや環境は?
0905nobodyさん
2010/12/20(月) 14:32:42ID:klkFZZbWRedHat ES4 + perl-5.8.5と、FreeBSD 5-STABLE + perl 5.8.8の2つの環境で
確認しました。
perlのバグですかね・・・。うーん。
0906nobodyさん
2010/12/20(月) 15:19:18ID:???does not map to euc-jp at /usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/Encode.pm line 158.
途中で euc にマッチするコードになるんだろうか?
binmode を使わないで、最後の方をこうするしかないみたい。
-------------
utf8::encode($x);
Encode::from_to($x, 'utf8', 'iso-2022-jp');
print $x . "\n";
-------------
0907nobodyさん
2010/12/20(月) 15:25:33ID:klkFZZbW最新のEncode.pm(2.40)でもdoes not map to euc-jpと出ました。
5.10.1でOKということはEncode.pmの問題じゃなくて本体の方の問題ですかね。
>binmode を使わないで、最後の方をこうするしかないみたい。
なるほど、確かにこちらならOKでした。
出力先がフィルターやファイルなのでこのまま書き直してうまく行くか確認が
必要ですが、こちらの方で動くか試してみます。ありがとうございます!
0908nobodyさん
2010/12/20(月) 18:35:18ID:???0909nobodyさん
2010/12/21(火) 01:22:26ID:???v5.8.8 built for i386-linux-thread-multi
Encode 2.40
0910nobodyさん
2010/12/21(火) 03:00:18ID:???http://blog.livedoor.jp/dankogai/archives/51231739.html
>>906の言うようにbinmodeを使わないのが正解。
utf8::encodeしてfrom_toとかじゃなくて print encode("iso-2022-jp", $x) のほうがいいと思うけど。
0912nobodyさん
2010/12/21(火) 09:05:29ID:???自分でencode関係のモジュール作るときは気をつけろって話じゃないの?
さすがにちぎれたからって結果がおかしくなるようなものが標準添付なのは
どうかと思うな。
0913nobodyさん
2010/12/21(火) 09:35:50ID:???>910
なるほど・・勉強になりました。
0914nobodyさん
2010/12/21(火) 17:40:31ID:???であるかのように振舞うにはどうしたらいいのでしょうか?
0916nobodyさん
2010/12/22(水) 09:00:32ID:???0917nobodyさん
2010/12/22(水) 11:08:37ID:???0918nobodyさん
2010/12/23(木) 10:41:19ID:???1時間ぐらい悩んだわ
0919nobodyさん
2010/12/25(土) 00:42:21ID:???use CGI::Carp qw(fatalsToBrowser);
がうまく動かないんですね。
%test ってだけすると Internal Server Error としか出ず。
use utf8 を外すと
Global symbol "%test" requires explicit package name at test.cgi line 25.
Execution of test.cgi aborted due to compilation errors.
ってちゃんと出る。
むぅ。。。
0920nobodyさん
2010/12/25(土) 01:59:19ID:???0921nobodyさん
2010/12/25(土) 04:32:14ID:???逆になんでブラウザだと表示されないのか、それはそれで疑問がw
0922nobodyさん
2010/12/25(土) 04:48:35ID:???0923nobodyさん
2010/12/25(土) 04:57:06ID:???0924nobodyさん
2010/12/26(日) 16:40:31ID:0uuAPxVPFlash板のスレッドにバカチョンが降臨しました、
スレッドは以下のスレです。
2009年 紅白FLASH合戦 新企画・反省スレッド
http://hibari.2ch.net/test/read.cgi/swf/1262431858/l50
上記スレッドの281が韓国猿で、
> 来年 12月 11日に全域します. 後でみなさんと共にできますね.
等とほざいています、是非煽って煽りまくって火病らせてあげてください^^
0926nobodyさん
2011/01/02(日) 02:18:19ID:???AmigoDatabaseを使ってデータベースに興味をもち、CSV形式で
1項目あたり2000個くらいの要素を抱えていて全部で1万項目
くらいのデータベースになりました
それぞれの要素は原則文字列なのですが時々数値が混じります
この数値を足し算したい場合、個々の数値が連想配列だとしたら
どのようにすれば良いのでしょうか
質問の仕方があいまいですみません
0927!omikuji
2011/01/02(日) 07:35:30ID:???0928nobodyさん
2011/01/02(日) 14:45:17ID:???>>1-2
http://perldoc.jp/docs/perl/5.10.1/perlfaq.pod
0929nobodyさん
2011/01/03(月) 00:07:46ID:???っていう文字列に対して
cdefg を検索し、efg を xyz に置換
っていうのはどうかけばいいんでしょう?
0930nobodyさん
2011/01/03(月) 00:17:22ID:???$s =~ s/efg/xyz/
if($s =~ /cdefg/);#cdefgを検索
こうですか
0931nobodyさん
2011/01/03(月) 00:22:50ID:???my $s = 'abcdefg';
$s =~ s/(cd)efg/$1xyz/;
みたいな感じでやってる
0932nobodyさん
2011/01/03(月) 00:27:26ID:???では不満なのか
あえて特殊エスケープとかつかうなら
$s =~ s/cd\Kefg/xyz/g;
または
$s =~ s/(?<=cd)efg/xyz/g;
0933nobodyさん
2011/01/03(月) 00:30:47ID:???s/abcdefg/abcdxyz/;
0934nobodyさん
2011/01/03(月) 01:31:06ID:???頻繁に CSS のクラス名を変えたり、順番を変えたりするもんで、
修正漏れに気がつかずにハマったので、一致するけど
置換は行わない部分の指定が出来れば。と思った次第です。
なので、>>932 さんの方法を試してみます。
0935931
2011/01/03(月) 01:49:54ID:???おぉ。そんな感じにできるんだ。すげぇ。
perldoc perlre見たらちゃんと書いてあった。勉強になった。
For instance
s/(foo)bar/$1/g;
can be rewritten as the much more efficient
s/foo\Kbar//g;
0936932
2011/01/03(月) 02:46:25ID:???0937nobodyさん
2011/01/03(月) 08:19:04ID:???否定形は何故作らなかったのだろうか。
0938nobodyさん
2011/01/03(月) 12:15:50ID:???すまなくなるからじゃないかな。
0939Perl忍者 ◆M5ZWRnXOj6
2011/01/03(月) 16:28:47ID:jfo7ol9+0940nobodyさん
2011/01/04(火) 14:59:21ID:???日本語入力ができなくなっているのですがどうすれば良いでしょう?
何かもとに戻す手続きはあるのでしょうか?
$ cat ./ScreenApp.pl
#!/usr/bin/perl
use Term::Screen;
my $scr = new Term::Screen;
$ ./ScreenApp.pl
画面描画
$ vi
で “あ[Enter]” と入力すると “c^B” と表示されて
「まだテキストが挿入されていません」とエラー
0941nobodyさん
2011/01/04(火) 15:07:36ID:???0942nobodyさん
2011/01/04(火) 15:25:09ID:???0945nobodyさん
2011/01/04(火) 16:03:28ID:???試してみたら手元の環境でもおかしくなった。resetコマンドで
直ったけど端末関係は詳しくないので原因とかはわかんね。
何かの状態を書き換えたまま放置とかしてるんだろうけど。
0947926
2011/01/05(水) 02:24:02ID:???リンク先の>>1-2は別として、有用なリンクを教えて頂いてどうもありがとうございます。
Perlをよくご存知の方なら知っていて当然のリンクも分からないのが今の自分なんです。
これから精進します。
0948nobodyさん
2011/01/06(木) 09:58:08ID:???ってやった時に $in から ENCTYPE を調べる方法ってありますか?
あと GET と POST を同時受け取るのって、CGI からは無理?
<form method="POST" action="aaa.cgi?opt=1">
みたいので呼び出したいのですが。。。
0949nobodyさん
2011/01/06(木) 11:21:12ID:???0950nobodyさん
2011/01/06(木) 12:07:30ID:???機能追加でファイルアップロードを付けようとしてるしだいで、GET で渡す部分は
弄りたくは無いなと・・・
0952nobodyさん
2011/01/06(木) 12:36:05ID:???thx!
0953nobodyさん
2011/01/10(月) 17:44:08ID:???0954nobodyさん
2011/01/10(月) 19:35:07ID:???【速報】bbs.cgiのソースが流出 ついに来たか・・・
http://hato.2ch.net/test/read.cgi/news/1294647372/
ここからDLできる
0955nobodyさん
2011/01/11(火) 22:48:54ID:???Perlどころか正規表現の扱い方すら覚え始めなので、根本的に間違ってるかも知れませんが
if ($value =~ /[@-/]/)
if ($value =~ /[\@-\/]/)
if ($value =~ [@-/])
どれもエラーが出てしまいます。
模範的な書き方としてはどうすればいいのか、お教え願えませんか
0956nobodyさん
2011/01/11(火) 23:17:24ID:???どの範囲にマッチさせたいのかわからない。
http://e-words.jp/p/r-ascii.html
^@ で表したりする NUL(\x00) と @(\x40)はちがうよ。
0957nobodyさん
2011/01/11(火) 23:23:27ID:???@はそのまま
-を3文字の中央に配置すると範囲指定になるので、エスケープするか最初に配置
0958nobodyさん
2011/01/12(水) 00:04:41ID:???お早いご回答、ありがとうございます。
$valueが
半角記号を含むかどうかを判別したいと思っていましたが
どうやら間違えていたのでしょうか
ttp://jp.layer8.sh/reference/entry/show/id/1121
こちらを見て
[@-/] で @!"#$%&'()*+,-./ をマッチ出来ると思っていました。
それならばとりあえず@は省くとしたら、
if ($value =~ /[!-\/]/)
これで !"#$%&'()*+,-./ を含むかどうか、を判別出来ると思ったのですが、
今度はエラーは出ないものの、マッチしてくれません。
基本的すぎるのか、
perl 半角記号 パターンマッチ 正規表現
あたりのキーワードでググってみても、いまいち解り易いページに辿り付けなくて難儀してます。
0959nobodyさん
2011/01/12(水) 00:14:06ID:???0960nobodyさん
2011/01/12(水) 00:17:44ID:???Invalid [] range "@-/" in regex; marked by <-- HERE in m/[@-/ <-- HERE ]/ at - line 1.
エラーになるのか。初めて知った。
0961nobodyさん
2011/01/12(水) 00:18:13ID:???[\x3a-\x40]
[\x5b-\x60]
[\x7b-\x7e]
これが記号かな?
0962955
2011/01/12(水) 00:38:59ID:???申し訳ない、ちゃんと正しい結果が返っていました。
こちらの確認不足でした。
>>961
こう16進数で表記してマッチさせる事も出来るんですか。
より幅広くチェック出来そうなので、色々試してみます。
とりあえず、したかった事はどうにか上手くいきそうです。
皆様ご助言、ありがとうございました。
0963nobodyさん
2011/01/12(水) 18:05:54ID:???後々解除したいときってどうすればいいんでしょう?
$ua->proxy('http', '') とかでよかったりします?
0964nobodyさん
2011/01/12(水) 19:23:23ID:???0965Perl忍者 ◆M5ZWRnXOj6
2011/01/12(水) 21:33:48ID:Icf1UA6A0966nobodyさん
2011/01/14(金) 00:08:21ID:???自分用のモジュールを用意しようと考えています。
オブジェクト指向のものを「Object::○○」に置き、
関数指向のものを「Function::○○」か「Utility::○○」に置こうと考えています。
問題点や、別の考え方、流行などがあればご指摘おねがいします。
0967Perl忍者 ◆M5ZWRnXOj6
2011/01/14(金) 00:29:01ID:???0968nobodyさん
2011/01/14(金) 00:37:38ID:???http://perldoc.jp/docs/perl/5.10.0/perlnewmod.pod
>・Choose a name
> (名前を決める)
> CPAN に含まれる Perl モジュールには、命名階層があり、それに合わせる必要があります。
> これがどのように整理されているかの詳細は、perlmodlib を参照してください。
> また、CPAN やモジュールリストを見て回って、どんなものか触れてみてください。
http://search.cpan.org/
http://perldoc.jp/docs/perl/5.10.0/perlmodlib.pod
> ・モジュールのための名前を選択しましょう。
> 関連したモジュール/クラスの一揃えを開発するのであれば、それは名前空間を破壊することを
> 防ぐような一般的なプリフィックスを持つネストしたクラスを使うよい練習になるでしょう。たとえば
> Xyz::Control, Xyz::View, Xyz::Model といったものです。
> もしプライベートな内部やプロジェクト固有の用途のために開発中のモジュールが決して公開
> されることがないなら、将来の公開モジュールと名前が衝突しないことを確実にしてください。
> これは、予約済みの Local::* カテゴリを使うか、 Foo_Corp::* のように名前に下線を含める
> ことで行えます。
0969nobodyさん
2011/01/14(金) 01:10:22ID:???回答ありがとうございます。
公開予定のないモジュールですので、名前に下線を含める方向で検討したいと思います。
0970nobodyさん
2011/01/14(金) 01:34:59ID:???print '.';
}
連続した3つの改行タグを2つの連続した改行タグに置換しようとしてるんだけど、
改行タグが置換されません。
0971nobodyさん
2011/01/14(金) 02:12:58ID:???こういうのじゃだめかしらん?
$html =~ s/<br \/><br \/><br \/>/<br \/><br \/>/gm;
print $html;
0972nobodyさん
2011/01/14(金) 03:21:44ID:???こういったやりかたが一般的かどうかを知りたいので、賛成意見、反対意見などがありましたら、宜しくお願いします。
ファイル操作で例えると以下のような感じです。(※セルフ=blessしたクラス名、括弧内の$は引数の有無を表している)
-- FILEクラス --
new() .................セルフを返す
set_filename($) ..セルフを返す
set_filedata($) ...セルフを返す
get_filename() ....値を返す
get_filedata() ......値を返す
read() .................セルフを返す
write() ................セルフを返す
-- サンプルコード --
my $file = FILE->new->set_filename("./aaa.txt")->set_filedata("bbb")->write->read;
print $file->get_filename . "n" . $file->get_filedata . "n";
0973nobodyさん
2011/01/14(金) 07:35:58ID:???0974nobodyさん
2011/01/14(金) 17:50:11ID:???そそ、メソッドチェーン。
セルフを返すメソッドと返さないメソッドが混在するのがモヤモヤするから質問してみた。
それだったら、アクセサだけで対応しようかなとおもったわけで。
井の中の蛙なので、外の情報が欲しいのです。
0975nobodyさん
2011/01/14(金) 18:22:33ID:???それは置いといてもset_*でselfが返ってくるのはキモいと思う。
0977nobodyさん
2011/01/14(金) 19:00:21ID:???0978nobodyさん
2011/01/14(金) 20:21:04ID:???my $html =<<"EOM";
aaa<br /><br /><br />aaa<br /><br /><br />aaa
bbb<br /><br /><br /><br /><br /><br />bbb
EOM
テストするなら、$htmlの中身はこんな感じのを入れればいいんじゃね?
while使う理由がわからんけど、while使ったら、改行タグ減りまくりになりそう。
0979nobodyさん
2011/01/14(金) 20:27:11ID:???>>977が言いたいのは「htmlがおかしいんじゃねぇの?」ってことでしょ
解決するような世紀表現出しても元がおかしくてダメだと解決しないからってことで
0981nobodyさん
2011/01/15(土) 01:05:53ID:???改行タグを減らしまくるのが目的です
$html の中身はブログから持ってきたデータで、<br /> を削除する前に
s/\r|\n|\t//g で改行コードとタブコードを全部削除して1行にしてあります。
で、処理するデータはデバッグとしてファイルに書き出して、目視で削除したい <br /> の連続があるのを確認済みです。
0982nobodyさん
2011/01/15(土) 01:09:23ID:???0983nobodyさん
2011/01/15(土) 01:53:54ID:???とりあえず、問題点を予想してみた。
・テキスト側が、<br />ではなく<br>(半角スペースとスラッシュをつけていない)
・テキスト側が、<br />ではなく<br/>(スペースの入れ忘れ)
・質問者のサーバーがMac。を入れるところを\マークにしている。
・エラーコード500である。
・strict宣言をしているのに、変数を初期化していない。
<<982
いや、まさかな
・元になるテキストの、<br />と<br />の間にスペースが入っていたりして。
とりあえず、改行タグを取る前の内容を出力してみてはどうでしょう?
0984nobodyさん
2011/01/15(土) 06:05:42ID:???$html =~ tr/\t\n\r / /s; # 改行、TAB、空白の圧縮
$html =~ s/^ | $//g; # 先頭と末尾に空白があれば削除
$html =~ s/(?<=>) (?=<)//g; # タグ間の空白を削除
$html =~ s|(?:<br\b[^>]*>){3,}|<br /><br />|gi;
0985nobodyさん
2011/01/15(土) 08:03:36ID:???んー。試したら、普通に動いてしまった。気のせいだろうか。
おいらの結論としては、$htmlの中身、ブログのテキストをうまくとりこめてないのかなと。
ファイルが原因だとしたら、デコードやエンコードを失敗してるのではないでしょうか。
そうでなければ、余計な文字列が紛れ込んでいるのかなと。
0987nobodyさん
2011/01/15(土) 09:59:19ID:???だから >>984 は空白を削除したり[^>]*で余計な文字列が紛れ込んでてもマッチするようにしてるんじゃないか
0988nobodyさん
2011/01/16(日) 03:20:10ID:lrCOl2/vperlでCGIを作っているのですが、
アクセスしてきた人が、どんなHTTPヘッダーを送ってきているのか調べたいのですが、
ページにアクセスされた時にHTTPヘッダーの取得する方法はどうすればいいでしょうか?
0989nobodyさん
2011/01/16(日) 03:47:42ID:???my $in = cgi->new
$in->str_なんちゃら
関数名失念
0990nobodyさん
2011/01/16(日) 03:54:27ID:???0991nobodyさん
2011/01/16(日) 04:20:42ID:???0993nobodyさん
2011/01/16(日) 08:32:57ID:???CGIの仕様としては送られてきたヘッダはHTTP_*という環境変数に入れて渡すという
ことになっているが、必ずしも全て渡さなくていいというよりむしろいらないヘッダは
渡すべきではないということになってるので確実に全てのヘッダを取得することは一般的
にはできないと思った方がいい。(RFC3875の4.1.18)
> サーバは、それが受信した全てのヘッダフィールドについての外部変数を作成する必要はない。
> 特に、例えば 'Authorization' のような、認証情報を転送する任意のヘッダフィールドや、
> あるいは、例えば 'Content-Length' や 'Content-Type' のような、他の変数からスクリプト
> にて利用可能なものは取り除くすべきである。 サーバは、'Connection' のような、クライアント
> 側との通信上の点にのみ関係するようなヘッダフィールドは取り除いてもよい。
特定のヘッダが欲しいのかただなんとなくみたいだけなのかトラブルシューティングで全部
必要なのかよくわからんからこれ以上はなんとも言えんな。
0994nobodyさん
2011/01/16(日) 10:27:12ID:???お答えいただきありがとうございました
HTTPヘッダーで値を受け渡しして動作するCGIを作ってみようと思ったのですが、
HTTP_*で取得できるのですね
本当にありがとうございました
0995nobodyさん
2011/01/16(日) 18:28:35ID:???0996nobodyさん
2011/01/16(日) 18:30:17ID:LLQAziXDPerlコーディング初心者質問スレ Part 62
http://hibari.2ch.net/test/read.cgi/php/1295170172/
0997nobodyさん
2011/01/16(日) 18:36:51ID:???0998nobodyさん
2011/01/16(日) 19:37:25ID:???ぺrl
ぺrl
0999nobodyさん
2011/01/16(日) 22:34:01ID:???1000nobodyさん
2011/01/16(日) 22:34:42ID:???10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。