Perlコーディング初心者質問スレ Part 55
■ このスレッドは過去ログ倉庫に格納されています
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/
0786785
2007/08/20(月) 11:52:52ID:O2ADjgGz×文字列としては読み込めますが
○文字列としては書き出せますが
0787765
2007/08/20(月) 18:34:36ID:U/5QePTjありがとうございます。また、すみません。
useが使えないというのは勘違いで、@INCに何も入っていないだけでした;
けれど、BEGIN { unshift(@INC, 'hogehoge'); }してもコンパイル時の
モジュール見つかりませんエラーに表示される
@INCの中にはhogehogeは入りませんでした。
スクリプトの中で@INCを(printなどして)参照すると確かにhogehogeは@INCに入っているのですが。。
どうにかしてモジュールを使う方法は無いでしょうか?
0788785
2007/08/21(火) 10:37:32ID:???案外ちょっとしたコーディングのミスだったりしない?
例えばModule名と中のPackage名が違ってて、use Package名にしてるとか・・・
あとは指定したパスが地味に間違ってるとか。
use FindBin qw($Bin);
use lib "$Bin";
とすると@INCの先頭にカレントディレクトリのパスが入るから確認してみては。
例えばuse lib "$Bin/../hogehoge"とすると、相対パスでひとつ上にあるhogehogeが指定される。
>>785で質問させてもらったんですが、解決しました。
Storableでファイルへの保存、呼び出しをしてたのですが、
表示する際にData::Dumperで整形してたのです。(バカな話だけど)
それで当然、もとのオブジェクトとしては扱えなくて。
Storableで戻した配列に対してそのままアクセスしたら復元できましたm(_ _)m
ファイルから呼び出したオブジェクトの配列リファレンス($result)に対して
for my $i (0..$#{$$result}) { printf "%s : %s\n", $$result[$i]->name, $$result[$i]->score; }
みたいな感じで。
というか質問自体がわかりにくかったですね。スマソ
0789nobodyさん
2007/08/22(水) 02:37:38ID:pj3xRAc/どうすればいいのでしょうか?
0791789
2007/08/22(水) 02:44:24ID:???次のページに瞬時でリンクした時、次のページに
データを渡したいのですがどうすればいいのでしょうか。
0793nobodyさん
2007/08/22(水) 10:48:13ID:???0794nobodyさん
2007/08/22(水) 10:50:22ID:???0796nobodyさん
2007/08/22(水) 12:16:22ID:???>>791の2行目の事じゃね?
>>791
「次のページ」が2つ出てきているが、それらは何なのか。またリンク元から見てどこに位置するのか。
「瞬時でリンク」とは何か。
これがわからないと答えようが無い。
0797789
2007/08/22(水) 12:19:59ID:???レスありがとうございました
0798nobodyさん
2007/08/22(水) 22:14:48ID:sWD+Yq++日本語のバイト数拾うのはどうすると良い?
0799nobodyさん
2007/08/22(水) 23:19:26ID:???お望みのコードにencodeしてlengthとるのが正攻法。
perlの内部表現(utf8)のバイト数でよければbytes::length
0800nobodyさん
2007/08/23(木) 00:35:43ID:???0801nobodyさん
2007/08/23(木) 07:54:48ID:uXF+dyLCなるほど。ありがとうございました。
0802nobodyさん
2007/08/23(木) 18:57:09ID:uXF+dyLCうほ!
0803nobodyさん
2007/08/24(金) 18:26:53ID:rvbxrzrr移動平均原価法で原価計算をしたいと思ってます
@COST=(
'2000','3','6000',
'3000','4','12000',
'1000','5','5000',
'4000','3','12000'
);
左から単価、個数、合計という@COSTの配列を作りました
ここからがわかりません。。foreachでまわしてはみたものの、
最初は2行で区切り計算をしてその結果を次の行と計算・・・という流れが作れません
どなたかヒントくださいますでしょうかm(_ _)m
0805nobodyさん
2007/08/24(金) 18:47:18ID:???上の例から行くと
1| (6000+12000)/7=2572
2| 2572*7=18004
3| 1000*5=5000
4| (18004+5000)/12=1917
5| 1917*12=23004
6| 4000*3=12000
7| (23004+12000)/15=2334
という順番に計算していき結果的に2334と出したい状況です。
0806nobodyさん
2007/08/24(金) 19:04:13ID:???0807nobodyさん
2007/08/24(金) 19:09:19ID:???> せめてもっとソースを示して、こうやりたいと書くべき。
坊やはつまんないKENT CGIでも改造してオレすごいぜーとか思いつつ引きこもっておけばいいじゃん。www
人様に迷惑かけんなよ。wwww
0808nobodyさん
2007/08/24(金) 19:18:28ID:???(2000*3+3000*4+1000*5+4000*3)/(3+4+5+3)
わかりやすいような気がするのだが。
各ステップで小数点以下を丸めてわざと誤差を余計に
蓄積させるのが肝??
0809nobodyさん
2007/08/24(金) 19:20:09ID:???use strict;
my @COST = (
['2000','3','6000'],
['3000','4','12000'],
['1000','5','5000'],
['4000','3','12000'],
);
use Data::Dumper;
my ($avarage_cost, $total_pieces, $total_price);
for my $param (@COST) {
my ($unit_cost, $pieces, $price) = @$param;
$total_pieces += $pieces;
$total_price += $price;
$avarage_cost = $total_price / $total_pieces;
print "$avarage_cost\n";
}
0811nobodyさん
2007/08/24(金) 19:26:14ID:???use strict;
use POSIX;
my @COST = (
['2000','3','6000'],
['3000','4','12000'],
['1000','5','5000'],
['4000','3','12000'],
);
my ($avarage_cost, $total_pieces, $total_price);
for my $param (@COST) {
my ($unit_cost, $pieces, $price) = @$param;
$total_pieces += $pieces;
$total_price += $price;
$avarage_cost = $total_price / $total_pieces;
$avarage_cost = ceil($avarage_cost);
$total_price = $total_pieces * $avarage_cost;
print "$avarage_cost\n";
}
0812nobodyさん
2007/08/24(金) 19:35:19ID:???でぐぐれ
0814nobodyさん
2007/08/24(金) 19:44:36ID:???0815nobodyさん
2007/08/24(金) 19:52:53ID:???0816nobodyさん
2007/08/24(金) 20:47:14ID:???馬鹿なのは珍しいな
見物させて貰うよ
0817nobodyさん
2007/08/24(金) 20:50:44ID:???> 馬鹿なのは珍しいな
> 見物させて貰うよ
馬鹿であると認識しつつ見物するというのは何らかの精神障害でもお持ちですか?
0818nobodyさん
2007/08/24(金) 21:55:07ID:???use POSIX qw(ceil);
my @cost = ([2000,3],[3000,4],[1000,5],[4000,3]);
my ($avg, $num) = @{$cost[0]};
foreach(1..$#cost){
$avg = ceil(($avg*$num+$cost[$_]->[0]*$cost[$_]->[1])/($num+$cost[$_]->[1]));
$num += $cost[$_]->[1];
}
print $avg, "\n";
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:???■ このスレッドは過去ログ倉庫に格納されています