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/
0769nobodyさん
2007/08/17(金) 20:44:42ID:???Perlインストール時にuse使えないようにコンパイルした可能性がないとも言えない
0770nobodyさん
2007/08/17(金) 20:51:26ID:???0771nobodyさん
2007/08/17(金) 22:20:54ID:???0772nobodyさん
2007/08/18(土) 00:34:04ID:???0773nobodyさん
2007/08/18(土) 12:44:15ID:???0774nobodyさん
2007/08/18(土) 12:47:38ID:???・専鯖、ハウジング系
・自宅鯖(Windows系)
・自宅鯖(UNIX系)
・レンタル鯖(月5000円以上)
・レンタル鯖(月1000円以上) ○
・レンタル鯖(月500円以上)
・レンタル鯖(月500円未満)
・無料のレンタル鯖
・プロバイダーの無料スペース
0775nobodyさん
2007/08/18(土) 12:53:27ID:???0776nobodyさん
2007/08/18(土) 14:09:22ID:???サーバー管理は出来ない知り合いに管理するの約束でただで使わせてもらってる
知り合いはつてで小さい会社のホームページ(静的なページのみ)とメール預かって金作ってるみたい
0777nobodyさん
2007/08/18(土) 17:19:19ID:???・レンタル鯖(月1000円以上)
この2つかなー。片方は仕事だが。
0778nobodyさん
2007/08/19(日) 15:53:31ID:t6VsRWnY@ABCD等の数字を対応出来なくて困ってます。
utf8のままで解決出来るんでしょうか?
0779nobodyさん
2007/08/19(日) 16:42:09ID:???0780nobodyさん
2007/08/19(日) 17:04:05ID:pOFLTECe今でもフォームからの受け取りは CGI.pm 等がデファクトスタンダードでしょうか?
cgi-lib.pl とか古い知識しかないので、CPANなどで最新の方法など御教示ください。
0781nobodyさん
2007/08/19(日) 17:44:44ID:???0785nobodyさん
2007/08/20(月) 11:49:55ID:O2ADjgGzSearch::Namazuを使用して得たNamazuの検索結果(オブジェクトの配列)をダンプしました。
ですが、このダンプしたデータの呼び戻し方がどうしてもわからないです・・。
検索結果(@result)内のデータは例えば以下のとおりです。
$VAR1 = bless( { 'name' => 'hoge', 'score' => '82' }, 'Search::Namazu::Result' );
$VAR2 = ・・・
次のようにすると上記したような文字列としては読み込めますが、できたのはそこまで。
for (@result) { print $_, "\n"; } # => $VAR1 = ・・・
ダンプせず直接書き出す場合は$_->nameでhogeが出力されるんですが・・・
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:???■ このスレッドは過去ログ倉庫に格納されています