Perlコーディング初心者質問スレ Part 43
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2005/08/12(金) 01:26:47ID:mHnZWvqz【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。
1: 自分はこういう事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
ソース貼る時は、全角スペースでインデント忘れずに。
良い回答は良い質問から。一緒に勉強しましょう。
過去ログやお勧めサイトは >>2-10
0409401
2005/09/15(木) 17:18:27ID:???あ、ほんとだ。リファレンスにも書いてあるし、何故見落としてたんだろう・・・orz
おかげさまでうまく行きました。ありがとうございました。
0410nobodyさん
2005/09/16(金) 08:23:19ID:0dogEF/n本当に申し訳ないです
知らない方がいらっしゃるのであれば申し訳ないのですがネットゲーム「罪と罰」のようなCGIを利用し、
複数のプレーヤーの様々な数値(ステータスなど)を参加者全体で共有するどういった内容で行なわれているのでしょうか?
ついでにもう一つの質問を。スレ違いな感はありますがどうか答えてやってください。
PerlとPHPが多くのCGIで利用されているようですが二種類の言語が存在するということは各々に得手不得手があるということですよね?
その得手不得手及び私が制作しようとしているCGIゲームではどちらが向いているのか、初心者ではどちらが学びやすいか教えてもらえるとかなり光栄です。
よろしくお願いします。
自分の質問…あまりにも馬鹿なのか基本的すぎるのか検索にすらHitしないんです…orz
0411nobodyさん
2005/09/16(金) 08:31:10ID:???もう少しちゃんと調べような。
http://www24.big.or.jp/~obo/game/ore_/gild/
これはPerlで書かれてる模様。
2つ目の質問はスレ違いだが、これ以上他のスレに誤爆されても困るので答えておく。
まずCGIと言う形では向いていない。
罪と罰もそうだけど、このタイプの設置を禁止している鯖も多い。
そしてCGIにはRubyやPython、JAVAもあればCもある。
要約するとこうだ、半年ROMってろ。
0412nobodyさん
2005/09/16(金) 08:32:08ID:???半日ROMってくる
0413nobodyさん
2005/09/16(金) 09:32:49ID:???う〜ん…
自分は船乗りなので海の上でできる趣味が無いかな?と思ったんですけどねぇ…。
本で勉強してからまた書き込みます。まずは罪と罰と同じPerlから購入してみようと思います。
オススメの書籍があるならばお教えください。
レス無くとも言われたとおりROMっているので気を悪くしないでください。
0414413
2005/09/16(金) 10:03:47ID:???私に出てきてほしい場合は(限りなくそんな場合無いとは思いますが…)乗船期間以外であれば「あの時のゲームCGI初心者」や「誤爆犯」など分かりやすく呼んでいただけると出てきます。
おそらく自分から出てくるのは仕事もあるので4ヵ月〜半年後になると思います。
0415nobodyさん
2005/09/16(金) 11:06:01ID:???次の質問ドゾー
0416nobodyさん
2005/09/16(金) 11:44:27ID:???>>410
まあ初心者的には php のが楽かもね、と。
0417413
2005/09/16(金) 21:00:27ID:???>>416さん
レスありがとうございます。
PHPですか。HTMLと一緒に記述できる点が初心者向きということですか?
本屋でPerl関連の本を探してもあまり見つからない(一冊しか無かった…)のは何故でしょう?
素人調べで悪いのですがUNIXと記述方法が似ていると言う事なのでUNIXを学べば良いのでしょうか?
でもUNIXってかなりレベルが高いような…
0418nobodyさん
2005/09/16(金) 21:05:55ID:???>本屋でPerl関連の本を探してもあまり見つからない(一冊しか無かった…)のは何故でしょう?
これはありえないと思われます。事実ならその本屋・・・品揃え悪すぎだと・・・
0420nobodyさん
2005/09/16(金) 21:30:04ID:???0422nobodyさん
2005/09/17(土) 00:01:30ID:???>>417
php は関数が最初から腐るほど用意されてあるから、
perl みたいに自分で書いたりモジュール用意したりする手間が省けることが多いのだよ。
そこが perl の楽しいところでもあるんだけど、初心者には荷が重いかもとか。
結構Web上でも初心者から学べる解説サイトがいくつかいくらでもあるので、そういうの見てもいいかもね。
まあ、ここは perl コーティングの質問スレだから、これ以上はここではきかないでね。
0423nobodyさん
2005/09/17(土) 00:24:53ID:???そう?妄想なら日記に書いておいてよ。
0425nobodyさん
2005/09/17(土) 04:40:43ID:???$funcs = get_defined_functions();
print count($funcs["internal"]);
?>
このスクリプトで組み込み関数の数を調べられるわけだが
うちの環境(PHP4.4.0+mb_string)では
826という数字が出て来た。
0426nobodyさん
2005/09/17(土) 07:33:55ID:???php5.1.0b2
1084
腐るほどかどうかは不明だが妄想とはいえないだろ
0427nobodyさん
2005/09/17(土) 07:58:14ID:???数えるのマンドクセ('A`)
0428nobodyさん
2005/09/17(土) 08:32:46ID:???こんな関数がある時点ですでに腐っている。
0429nobodyさん
2005/09/17(土) 09:10:30ID:???0430nobodyさん
2005/09/17(土) 10:05:17ID:???0433nobodyさん
2005/09/17(土) 15:15:36ID:???また、組み込み関数とやらにバグがあった場合、root 等の権限を
持たないユーザでは何も出来なくなるけど、そういう場合どうするの?
0434nobodyさん
2005/09/17(土) 15:35:59ID:9NJ0Gho0キーを抜き出したいのですが、これは無理なんでしょうか?
%hoge = ('aaa', 3, 'ccc', 2, 'bbb', 1);
foreach(%hoge){
print "$_ ";
}
欲しい結果
aaa 3 ccc 2 bbb 1
0435nobodyさん
2005/09/17(土) 15:43:14ID:ceziuPlebiglobeでMIME::BASE64使うにはどうしたらいいの?
0436nobodyさん
2005/09/17(土) 16:07:42ID:Oc8EoCio無理じゃない?キーの頭に値を入れてソートするとか
0438nobodyさん
2005/09/17(土) 16:41:27ID:???それができるモジュールがあったと思う。
モジュール名は失念。
>>435
MIME::BASE64 を cpan あたりからダウンロードして biglobe の自分の
ディレクトリに置き、
use lib qw(path/to/MIME::BASE64);
でOK。
0439nobodyさん
2005/09/17(土) 16:44:02ID:???use Tie::Hash::Array;
tie my %hoge, 'Tie::Hash::Array';
%hoge = ('aaa', 3, 'ccc', 2, 'bbb', 1);
foreach(%hoge){
print "$_ ";
}
0440nobodyさん
2005/09/17(土) 16:44:52ID:???> MIME::BASE64 を cpan あたりからダウンロードして biglobe の自分の
http://search.cpan.org/src/GAAS/MIME-Base64-3.05/
xs とかあるけど、どーやってコンパイルするんだろう。
0441439
2005/09/17(土) 16:45:43ID:???0444nobodyさん
2005/09/17(土) 17:04:08ID:???>>434 がどうして >>434 なような意味不明なことを考えたかだ。
@unko = ('aaa', 3, 'ccc', 2, 'bbb', 1);
foreach (@hoge){
print "$_ ";
}
0445nobodyさん
2005/09/17(土) 17:08:38ID:???pure perl 版はどうでしょう?
http://search.cpan.org/~gaas/MIME-Base64-Perl-1.00/lib/MIME/Base64/Perl.pm
0447nobodyさん
2005/09/17(土) 17:14:41ID:???へー。pure perl なのあったんでつね。
>>446
がんばってコンパイラの使い方を説明してあげてくれ。w
0448439
2005/09/17(土) 17:15:38ID:???use Tie::Hash::Indexed;
tie my %hoge, 'Tie::Hash::Indexed';
%hoge = ('aaa', 3, 'ccc', 2, 'bbb', 1);
foreach(%hoge){
print "$_ ";
}
# 一応できたけど、このモジュールだったけか…。
0449nobodyさん
2005/09/17(土) 17:19:12ID:???0451nobodyさん
2005/09/17(土) 17:55:00ID:9NJ0Gho0どうもありがとうございます。
用途は、、確かに配列でも代用できそうなんですけど、
キー指定して、値を引っ張るて事をしたく、
たまに、決まった順番でまとめて出力したかったからです。
0453nobodyさん
2005/09/17(土) 18:09:57ID:???PHPは配列とハッシュ(連想配列)の区別がないから、そのはず。
(じゃないと、キュー/スタックとして使えなから。)
$hoge = array('aaa' => 3, 'ccc' => 2, 'bbb' => 1);
foreach($hoge as $key => $value){
echo "$key => $value ";
}
結果
aaa => 3 ccc => 2 bbb => 1
0455nobodyさん
2005/09/17(土) 18:18:20ID:???0456nobodyさん
2005/09/17(土) 18:29:36ID:???0457nobodyさん
2005/09/17(土) 18:45:39ID:???0458nobodyさん
2005/09/17(土) 18:47:37ID:???それだったら
@hoge = ('aaa', 3, 'ccc', 2, 'bbb', 1);
こうやっといてから
%hogehash = @hoge;
って2つつくれば済むような。
0461nobodyさん
2005/09/17(土) 19:00:26ID:???0462nobodyさん
2005/09/17(土) 20:19:55ID:???0463nobodyさん
2005/09/17(土) 20:25:16ID:???0464nobodyさん
2005/09/17(土) 21:02:52ID:EwuItVJ4疑似ハッシュって今ダメなんだっけ?
>>440
MIME::Base64ならローカルにコンパイルしてFTPでコピーしても動くよ。
0465nobodyさん
2005/09/17(土) 21:16:29ID:???put 先の環境がわからない場合は、手が出せないと思うのだけど。頭大丈夫?
0466nobodyさん
2005/09/18(日) 01:36:06ID:???やってるやつは1人か2人だと思うけど。
マジレスすると
>>452
そういうニーズがあって別に問題ないだろう。
>>465
もう少し知識をつけてから書き込みましょう。
0467nobodyさん
2005/09/18(日) 02:17:25ID:???> もう少し知識をつけてから書き込みましょう。
何の知識だろう?説明して欲しいなら正直に言えばいいのに。
pure perl 版でない MIME::Base64 を動かす場合、xs をコンパイルしないとけない。
biglobe で動くようにバイナリを作らないといけないので、
> put 先の環境がわからない場合は、手が出せないと思うのだけど。頭大丈夫?
0468nobodyさん
2005/09/18(日) 02:21:44ID:???> そういうニーズがあって別に問題ないだろう。
頭が大丈夫か否か確認しているだけで、問題であるとは言ってないのでは?
0470nobodyさん
2005/09/18(日) 02:40:02ID:???0471nobodyさん
2005/09/18(日) 02:40:28ID:???0472nobodyさん
2005/09/18(日) 02:42:27ID:???0473nobodyさん
2005/09/18(日) 02:44:47ID:???0474nobodyさん
2005/09/18(日) 02:49:56ID:???0475nobodyさん
2005/09/18(日) 02:53:27ID:???0476nobodyさん
2005/09/18(日) 03:02:25ID:5XfzNwGp0477nobodyさん
2005/09/18(日) 03:03:29ID:???0478nobodyさん
2005/09/18(日) 03:08:31ID:???小学生とか2回もウザいし。
0479nobodyさん
2005/09/18(日) 06:58:08ID:???擬似ハッシュは5.10.0以降無くなるから、お勧めしない。
perlrefのPseudo-hashes: Using an array as a hash、NOTE参照。
0480nobodyさん
2005/09/18(日) 15:30:34ID:tUMS1QFu…ということをレンタルサーバーでやりたいんですが、あまり大きくない画像(試した画像は174x180ぐらい)では
うまくいくものの、でかい画像(試した画像は1201x1372)になると処理が途中で止まってしまうみたいです。(アップロード処理後で出力しているはずのHTMLが出力されない)
アップロードまではうまく行ってるようなのでアップロード後の処理のみですが、作ったスクリプトは以下のような感じです。原因も対応もさっぱりです。どうすればよいでしょうか?どなたか教えてください。
$icon_width = 100; # 幅を100に縮小
$icon_height = 100; # 高さを100に縮小
open(IMG, "アップロードされたファイル");
$sourceimg = newFromJpeg GD::Image(\*IMG);
($image_size_x, $image_size_y) = $sourceimg->getBounds();
close(IMG);
$newimg = new GD::Image($icon_width, $icon_height, 1);
$newimg->copyResized($sourceimg, 0, 0, 0, 0, $icon_width, $icon_height, $image_size_x, $image_size_y);
open(FILE, ">縮小後のファイル.jpg");
print FILE $newimg->jpeg();
close(FILE);
0482nobodyさん
2005/09/18(日) 15:37:23ID:???ローカルで一度試してみ。
0483480
2005/09/18(日) 16:03:16ID:???とりあえず使ってるレンサバではシェルが使えるのでシェル上で
適当に画像を置いてやってみたら、ちゃんと縮小されました…
0485nobodyさん
2005/09/18(日) 16:21:18ID:???ローカルのテスト環境はWin2000とPerlは5.8.7です。
MySQLは無事にインストールが出来、動作も確認済みです。
Perlで呼び出す際の問題なのですが、use DBI;とすると、
Can't locate loadable object for module DBI in @INC (@INC contains: C:/usr/lib C
:/usr/site/lib .) at C:/usr/lib/DBI.pm line 254
というエラーが出てしまいます。
が、DBI.pmはあるべき場所にありますし、エラーの出る行数を見ても}
があるだけで、行き詰まっております。
0486480
2005/09/18(日) 16:22:26ID:???which cronでパスが表示されるので入ってるみたいです。
ただ、恥ずかしい話ですが私は使ったことがないので使い方を知りません。
0487nobodyさん
2005/09/18(日) 17:10:35ID:???ttp://www.coolbrain.net/cron.html
知らない事については、勉強すればいいと思う。
いろいろ試してみて理解不能だったら、また質問すると良いよ。
0492485
2005/09/18(日) 17:39:42ID:???0493nobodyさん
2005/09/18(日) 17:42:06ID:???なんで、それだけで動くと思う?
http://perldoc.jp/docs/modules/DBD-mysql-2.1026/DBD/mysql/INSTALL.pod
0494485
2005/09/18(日) 17:57:30ID:???Perlモジュールスレがあったみたいなので、そちらで勉強してきます。
0495nobodyさん
2005/09/19(月) 19:07:11ID:beipsuRn共通の設定定義ファイルを読み込み、それがシステムで使いまわされる感じを
考えています。
*パス構成*
cgi-bin/
| settings.pl … (x)変数に設定を代入している、定義ファイル
-log
| |counter.cgi … (a)アクセスカウンター ( settings.pl で設定した変数が生きている )
|
-bbs
.|index.cgi … (b)掲示板トップ ( settings.pl で設定した変数が消えている )
(a)にて、require '../settings.pl' を行うと、(x)で宣言した変数は生きているのですが
(b)にて、require '../settings.pl' を行っても、(x)の宣言が反映されません。
どなたか、お知恵をお貸しいただければ幸いです。
0497nobodyさん
2005/09/19(月) 21:36:55ID:???問題が発生する最も短いソースを作ってみることが大切だね。
そうすると、質問しなくても自分で解る場合も多い。
一番ありそうなのは、変数のスコープが違っているということだろうけど。
0498nobodyさん
2005/09/19(月) 21:45:40ID:uGVzhqRv0499nobodyさん
2005/09/19(月) 21:49:45ID:???全然試してないけど
my $file = 'hoge.txt';
my $line = 12;
open(FH, $file) || die "$file : $!\n";
while (<FH>) {
next if ($. < $line || $line < $.); # skip
print $_; # 目的の行
}
close(FH);
0500495
2005/09/19(月) 21:55:20ID:???レスありがとうございます。
二重require(use) して、干渉しているようです。??(?Д?)
cgi-bin/
| settings.pl … (x)変数に設定を代入している、定義ファイル
-log
| |counter.cgi … (a)アクセスカウンター
|
-bbs
.|index.cgi … (b)掲示板トップ
.|BBSthread.pm … (c)スレッド制御モジュール
(b)の index.cgi では、 use BBSthread.pm を宣言していて、
さらに (c) の BBSthread.pm で require '../settings.pl' 宣言していました。
試験的に use BBSthread をコメント化したところ、
settings.pl で設定した値が取得できました。
counter.cgi ではこのような二重require を行っていません。
これが原因っぽいです。
今回は、二重require されないようコーディングすることによって回避します。
ありがとうございました。
0501nobodyさん
2005/09/19(月) 22:03:07ID:???質問の上手い下手だけでその人の素質が分かりそうな気がする。
0502nobodyさん
2005/09/20(火) 00:12:02ID:???同じファイルに対してrequire を二重に実行すると、2回目は読み込まれない。
BBSthread.pm とcounter.cgi とで変数のスコープが違っているなら、
先にrequire した方にのみ、settings.plの内容が反映されることになる。
手っ取り早く解決するなら、require を eval に変更すればいいのだが、
このような使い方は感心しないね。
settings.pl の内容を、システムに共通な定数のリストを返す「関数」
にして、各モジュールはこの関数を呼び出すのが常道だと思われるが。
0503nobodyさん
2005/09/20(火) 02:27:35ID:jMPX6Q/fSQLで取得したデータをHTMLでテーブルにして表示しているのですが、
よくフリーメールであるような各行にチェックボックスがあって、
それにチェックを入れたデータだけCSVに書き出すといったものを作りたいのですが、
ロジック的にはどういったものになるのでしょうか??チェックボックスでCGIに渡せるパラメータは
○○=on とかってなりますよね。どうやって、データを識別したらよいでしょうか???
0505nobodyさん
2005/09/20(火) 03:50:56ID:???決してバカにするつもりで聞くわけじゃないけど、今までにCGIのプログラムを
書いて、ブラウザからフォームのデータを受け取ってみたことある?
いや、もしかして、そのレベルでつまづいているんじゃないかと思ったんで。
0506nobodyさん
2005/09/20(火) 04:20:05ID:???そういうひねくれた質問の仕方すると何かいいことある?
いや、もしかして、初心者いじって喜んでるんじゃないかと思ったんで。
0507nobodyさん
2005/09/20(火) 06:54:46ID:???0508nobodyさん
2005/09/20(火) 07:07:20ID:???0509nobodyさん
2005/09/20(火) 07:19:44ID:???<input> には name と value に任意の文字列が指定できる。
チェックボックスの場合、チェックがオンになっているときだけ
name=value という形式の文字列が送られてくる。
従って name が同じでも value が違えば識別できる。
順序は保証されないので、順序に依存してはいけない。
■ このスレッドは過去ログ倉庫に格納されています