Perlコーディング初心者質問スレ Part 55
レス数が900を超えています。1000を超えると表示できなくなるよ。
0001nobodyさん
2007/05/30(水) 11:34:01ID:???【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。
1: 自分はこういう事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。
お勧めサイトは >>2-10
前スレ http://pc11.2ch.net/test/read.cgi/php/1171102883/
過去ログ倉庫 ttp://user.ftth100.com/mirrorhenkan/perl/
0819nobodyさん
2007/08/24(金) 22:07:07ID:???0820nobodyさん
2007/08/25(土) 00:34:26ID:???0821nobodyさん
2007/08/25(土) 10:30:06ID:???ヒントというかコピペで使える答えを有難う御座います!!
全て試しましたところ3つとも希望通りの動きをしてくれました。
すごくわかりやすくて綺麗なソースです。感謝です
0822nobodyさん
2007/08/26(日) 13:21:03ID:???はエラーになるけれど、
$obj = Pkg->new();
または
$obj = Pkg::new('Pkg');
はエラーにならない原因は何が考えられるでしょうか。
0823nobodyさん
2007/08/26(日) 14:14:37ID:???package main;
sub new { print "main::new\n" }
Pkg->new();
new Pkg();
package Pkg;
sub new { print "Pkg::new\n" }
0825nobodyさん
2007/08/27(月) 01:16:35ID:/FKQmVjf掲示板をPerlで作るとき、データは皆さんどのようにして保存しますか?
私が考えたのは
・連番テキストファイル
・連番XMLファイル
・一つのXMLファイル
ぐらいですが、他にもいい方法などありますか?
0826nobodyさん
2007/08/27(月) 01:17:26ID:???0827nobodyさん
2007/08/27(月) 01:35:16ID:???0828nobodyさん
2007/08/27(月) 01:43:22ID:/FKQmVjf外部からも、元データを簡単に参照できるようにしたいので、SQLなどは除外して考えています
0829nobodyさん
2007/08/27(月) 01:51:46ID:???0830nobodyさん
2007/08/27(月) 01:57:04ID:???0831nobodyさん
2007/08/27(月) 01:57:55ID:???外部からの参照時は1枚被せる
0832nobodyさん
2007/08/27(月) 02:10:27ID:/FKQmVjfでは、これを機にSQlite+Perlでも勉強してみます
0833nobodyさん
2007/08/27(月) 03:13:28ID:???どうせいっぱいいっぱいになって途中で投げ出すよw
0834nobodyさん
2007/08/27(月) 07:19:52ID:???まあ、冗談は別として。
なんで連番ファイルにしようと思ったん?
0835nobodyさん
2007/08/27(月) 12:21:06ID:???DB入力だけ別鯖へ投げようと思ってます。
(そのDB鯖は外部からのDB接続は許可してない)
それでLWP::UserAgentで外部鯖へPOSTさせた場合の動作で、
CSVが100行あった場合、ループ内で100回のPOSTになりますが
その時に外部鯖の処理速度もループに影響しますよね?
0836nobodyさん
2007/08/27(月) 12:25:46ID:???0837nobodyさん
2007/08/27(月) 12:54:31ID:???0838835
2007/08/27(月) 12:57:01ID:???ループ内に処理は書いてなく、LWP::UserAgentでPOSTしてるだけですが、
結局DB鯖での処理が終わってreturn受けてから次のループ というフローでOKでしょうか?
0839nobodyさん
2007/08/27(月) 13:31:30ID:???フォームでどうやって投げてると思ってんだろうね
0840nobodyさん
2007/08/27(月) 13:50:36ID:/hovVpUg0841nobodyさん
2007/08/27(月) 13:51:18ID:???0842nobodyさん
2007/08/27(月) 14:09:38ID:???0844835
2007/08/27(月) 15:03:22ID:???ただDB鯖の方は全く操作できない(させてもらえない)環境なので、
CSV処理のCGIを1つかまして、そこから個別に1件ずつPOSTするフローにしました。
こういった場合、何かこうしろみたいな方法はありましたら御教示よろしくお願いします。
※外部DB鯖の管理元に解決のお願いをするのは無しの方向でw
0845nobodyさん
2007/08/27(月) 15:23:24ID:???0846835
2007/08/27(月) 15:55:05ID:???未熟すぎで申し訳ないです。全部いっぺんにというのはLWP::UserAgentの処理方法でしょうか?
それとも全く別の方法でしょうか?今現在はこういった感じになってます。
# リクエスト生成
my $url = 'http://example.com/index.cgi';
my %formdata = ('Name'=>$Name[0], 'Age'=>$Age[0]);
my $request = POST($url, [%formdata]);
# UserAgent生成処理
my $ua = LWP::UserAgent->new;
my $res = $ua->request($request);
print $res->as_string;
0847nobodyさん
2007/08/27(月) 16:00:44ID:???0848ミューズイングリッシュ
2007/08/27(月) 16:21:52ID:???小さな英会話教室をしていて、ホームページを作っています。
そこでスケジュールカレンダーをphpで、できるとのことだったので、
友人からもらったプログラムをリンクさせましたが、
ログインすると、
Parse error: parse error, unexpected T_STRING in /www/a-mail/muse-eng.jp/public_html/schedule/Calendar.class.php on line 85
と、このようにでます。
ド素人なのでプログラムの書き換えもわかりません。
デザインは出来ていています。
phpプログラムを見て適正に修正して頂ける方探しています。
もちろん謝礼贈呈します。予算がないので10,000円で考えていますが、
お力添えいただける方、宜しくお願いいたします。
対象のホームページ www.muse-eng.jp
ご連絡先メールアドレス aimaniajp@yahoo.co.jp
宜しくお願いいたします。
0849nobodyさん
2007/08/27(月) 16:52:11ID:???0850840
2007/08/27(月) 16:55:57ID:/hovVpUguse HTTP::Request::Common qw(POST);
my $url = 'http://yyyyyy';
my %formdata = ('uuu' => 'uuuuuuuu', 'iiiii' => 'iiiiiii');
my $request = POST($url, [%formdata]);
my $ua = LWP::UserAgent->new;
my $res = $ua->request($request);
print $res->as_string;
my $ua = LWP::UserAgent->new;の記述でscriptエラーでるのですが
これはサーバーの不備でしょうか?
0852835
2007/08/27(月) 17:21:20ID:???通常の入力フォームはありますが、1件ずつが大変だしデータフォーマットを合わせるために、
CSVのデータからCGIで各値の変換(英数字を半角など)をしてからPOSTする予定です。
0853nobodyさん
2007/08/27(月) 17:32:31ID:???上から言われたら反抗もせずに無駄な労力を費やすと。www
0854nobodyさん
2007/08/27(月) 17:35:01ID:???普通にDBに接続しろってw
0856840
2007/08/27(月) 18:50:06ID:/hovVpUg目的の外部HTMLはいろいろ処理(タイトルが変化や色が変わる)していて
表示処理が完全に終わったソースを
perl側から見ることはできないでしょうか?
0857nobodyさん
2007/08/27(月) 18:51:22ID:???0858nobodyさん
2007/08/27(月) 20:37:22ID:???それにしても、未だに CGI なんか作ってる人たちっているのかぁ。
0859nobodyさん
2007/08/27(月) 21:09:29ID:???0860nobodyさん
2007/08/27(月) 22:15:58ID:???0861nobodyさん
2007/08/27(月) 22:56:41ID:???あとスレ違いだからこの辺にしとこうぜ
0862nobodyさん
2007/08/28(火) 03:36:17ID:???> あとスレ違いだからこの辺にしとこうぜ
答えれなくなるとそうやって逃げるんだよな。www
0863nobodyさん
2007/08/28(火) 08:26:21ID:???信じられん、、、
0864nobodyさん
2007/08/28(火) 11:02:31ID:???0866nobodyさん
2007/08/28(火) 12:13:31ID:???0867nobodyさん
2007/08/28(火) 13:59:00ID:???0868nobodyさん
2007/08/28(火) 17:03:57ID:???0869nobodyさん
2007/08/29(水) 01:05:13ID:???0870nobodyさん
2007/08/29(水) 01:11:29ID:???0871nobodyさん
2007/08/29(水) 06:39:40ID:XYYl0jHZコマンドプロンプトからActivePerlを使っていますが、
perldoc Jcode::Nihongo
とした時に文字化けします。
どうしたら正常に表示されますか?
それから、CygwinからもPerlを使ってますが、
$ perldoc
Segmentation fault (core dumped)
$ perl -V
Segmentation fault (core dumped)
$ cpan
Segmentation fault (core dumped)
といった表示が多発しています。
これはどうしたら直りますか?
0872nobodyさん
2007/08/29(水) 10:44:32ID:???0873nobodyさん
2007/08/29(水) 12:32:27ID:???perldoc -T Jcode::Nihongo | perl -MJcode -p -e "$_ = Jcode->new($_, q(euc))->sjis"
Cygwinは使ったことないが、
それだけでは、誰にも分からないだろう。
0874nobodyさん
2007/08/29(水) 13:27:36ID:???0875nobodyさん
2007/08/29(水) 13:53:19ID:???0876nobodyさん
2007/08/29(水) 14:01:41ID:???0877nobodyさん
2007/08/29(水) 16:47:36ID:???0878nobodyさん
2007/08/29(水) 21:19:54ID:???どうでもいいなら、どうしてここに反応を書き込むの?
キモい2次元絵見ながら黙ってチンコでもいじってればいいだろ。
0879871
2007/08/29(水) 21:44:47ID:P8i/jgkh回答ありがとうです。
勉強なります。
>>876
Encodeのほうが最近向きなんですね。
ちょっと調べてみました。
もう1つの質問は自己買い付けしました。
我ながらとちくるった質問の仕方でした。w
0880nobodyさん
2007/08/30(木) 13:15:57ID:???jcode'convert(*name, 'euc');
これでEUCに変換してるんですが、
半角カタカナを入れると文字化けしてしまします。
どうすればいいのでしょうか。
0881nobodyさん
2007/08/30(木) 13:29:38ID:???0883nobodyさん
2007/08/31(金) 18:10:59ID:???0884nobodyさん
2007/09/01(土) 09:16:04ID:???>Use of POE::Component::IRC->new() is deprecated, please use spawn().
>Called from main /home/xxxx/perl-lib/dicebot.pl 100
と怒られてしまいました。
これは、
POE::Component::IRC->new( 'dicebot' ) と書いてある部分を
そのまま POE::Compenent::IRC->spawn( 'dicebot' ) に書き直せばOKという意味なのでしょうか?
0885nobodyさん
2007/09/01(土) 12:15:25ID:???0886nobodyさん
2007/09/02(日) 00:16:36ID:1H6hgBEMどういうコード書けば良いんでしょうか?
例えば公開されてるIP帯域が127.0.0.0/24だとするなら
$ENV{'REMOTE_ADDR'} =~ /^127.0.0.[0-9]+$/
のように上位24ビットだけマッチするなら真で良いんですか?
(例の帯域はあり得ないかも知れませんがサブネットマスクについて良くわからないんで勘弁してください)
0887nobodyさん
2007/09/02(日) 00:17:53ID:1H6hgBEM0888nobodyさん
2007/09/02(日) 00:21:59ID:???my $ipdec = 0; # 10進に変換された IP
my $basedec = 256 * 256 * 256 * 256; # ベースとなる値
for(my $i = 0; $i < 4; $i++){
$basedec = $basedec / 256;
$ipdec += $basedec * $quadip[$i];
}
これで $ipdec に10進数にされた IP アドレスが入るので、同じように公開されてる IP アドレスの範囲も10進数に変換して
その範囲内に収まってるかどうかで確認できる。
0889nobodyさん
2007/09/02(日) 00:23:50ID:???## IP の範囲やサブネットから IP の最小値と最大値を10進数で返す
sub getipminmax{
my($ip) = $_[0] || "";
my(@retip) = (0, 0);
# $ip に数字、/、- 以外があればエラーリターンする
if($ip =~ /[^\d\.\-\/]/){ return @retip; }
# - か / で分割する
if($ip =~ /\-/){ # IP の範囲
my ($ipaddr1, $ipaddr2) = split(/\-/, $ip);
$retip[0] = &ip2dec($ipaddr1);
$retip[1] = &ip2dec($ipaddr2);
}elsif($ip =~ /\//){ # サブネット
my ($ipaddr, $subnet) = split(/\//, $ip);
my $subnetdec = (2 ** 32) - (2 ** (32 - $subnet));
my $ipaddrstart = &ip2dec($ipaddr) & $subnetdec;
$retip[0] = $ipaddrstart;
$retip[1] = $ipaddrstart + (2 ** (32 - $subnet)) - 1;
}else{ # 単一の IP
$retip[0] = &ip2dec($ip);
$retip[1] = 0;
}
return @retip;
}
0891nobodyさん
2007/09/02(日) 01:22:15ID:???質問です。
ユニークな6〜8文字の英数字文字列があるのですが、この文字列を他の文字列(英数字10文字)にしたいんですが、
それもユニークにしたいんです。
ならべく元の文字列がわからないようにしたいんですが、何か方法はありますでしょうか?
ユニークな文字列は5万行ぐらいあります。
0893nobodyさん
2007/09/02(日) 01:33:55ID:???0894nobodyさん
2007/09/02(日) 01:38:33ID:???2行目は初期化してるだけ
3行目は
111.222.333.444 という IP をループさせないで素直に書くと
(111 * 256 * 256 * 256) + (222 * 256 * 256) + (333 * 256) + 444
となります
これじゃ見た目がアレなのでループで回す関係上基準値というか初期値を定義してるのが3行目です
0895nobodyさん
2007/09/02(日) 01:40:06ID:???じゃぁ初心者じゃないあなたが書いてみてください
参考にしたいです m(_ _)m
>>890
ここまで書いておいてアレですが IP アドレスが指定する範囲に収まってるかどうかチェックするような
perl モジュールがあったはずです
0897nobodyさん
2007/09/02(日) 01:54:25ID:???既存のハッシュ関数を元に自分で作りなさい。
MD5とかSHA1も中身は乱数表でクルクルさせてるだけだから。
0899nobodyさん
2007/09/02(日) 02:10:43ID:???それは知ってたけど、0から書いて10進にする過程を勉強したかったからそういったコードを期待したのだが・・・
0900nobodyさん
2007/09/02(日) 02:18:02ID:???0902nobodyさん
2007/09/02(日) 13:00:20ID:???ここは初心者が初心者に答えるスレですね
0903nobodyさん
2007/09/02(日) 15:05:41ID:???0904nobodyさん
2007/09/02(日) 18:56:16ID:???PHPやRuby Java はすんなり理解できるのに Perl は納得いかないことばかりだ・・・
0905nobodyさん
2007/09/02(日) 19:05:01ID:???2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。
まずどういう部分が納得いかないでわからないでいるのかを書かないと教えてもらえないよ
0906nobodyさん
2007/09/02(日) 19:35:56ID:???んー、>904に特に意図は無いんじゃねーのかな。
質問スレに書くべきことかどうかはともかく。
良し悪しは別として、Perlは怠慢・短気・傲慢の方向に進化した言語だから、
他言語から入って来たような人だと違和感があってもおかしくないっしょ。
0907nobodyさん
2007/09/02(日) 19:39:57ID:???>Perl ってなんでこんなに複雑なんだ?
これじゃなきゃ、CPANにあるような膨大なモジュールを作り出せないよ
0908nobodyさん
2007/09/02(日) 20:30:52ID:???0909nobodyさん
2007/09/02(日) 21:26:57ID:???0910nobodyさん
2007/09/03(月) 16:56:41ID:EmlGMulIリファレンスも渡さずに呼び出し先が$_を変更する事はできますか?
0911nobodyさん
2007/09/03(月) 17:11:15ID:???やってみたら判るだろ?
perl -le '$_= 1 ;sub { $_=2}->(); print $_ '
0913nobodyさん
2007/09/03(月) 17:29:35ID:???perl -le '$_= 1 ;sub { local $_=2}->(); print $_ '
0914nobodyさん
2007/09/04(火) 00:51:54ID:???0917nobodyさん
2007/09/04(火) 06:15:03ID:???A:「映画館でいいんじゃね?」
914:「コンドームも持たずに何やってんだボケ!!」
、、、くらいに>>914はズレてんなあ。QもAもコンドーム持ってっか
どうか会話内容からは分からんのに。それどころかmy知ってるし、
使ってる可能性の方が高いのに。
0918nobodyさん
2007/09/04(火) 07:00:37ID:???レス数が900を超えています。1000を超えると表示できなくなるよ。