トップページ⇒php
1001コメント349KB

Perl コーディング初心者質問コーナー Part35

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん04/05/26 16:48ID:kkhhiYmo
いらっしゃーい、Perlのコーディングで困ってる人のスレです。

【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。

1: 自分はこう言う事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。

最低でも1と3が無いと誰も答えられないよ。
ソース貼る時は、全角スペースでインデント忘れずに。
良い回答は良い質問から。一緒に勉強しましょう。

過去ログやお勧めサイトは >>2-10
0307nobodyさん04/06/12 12:35ID:???
>>294
スレ違い
0308nobodyさん04/06/12 12:46ID:???
>>305
読んだ内容が、書かれているはずの物と異なる瞬間が存在して、その瞬間に読んだときに
ファイルが壊れているように見える。

再現性が非常に低いから解析できてないけど、どうしてもシステムのバグ以外には考えられない現象に遭遇したら、
そんなこと言ってた名無しがいた事を思い出せば、ちっとは得するかもな。
0309nobodyさん04/06/12 13:25ID:???
>>308
書き換え前の内容と書き換え後の内容が混ざってるぐらいは
あってもしょうがないかなと思うけれども、どちらでもない
ゴミが読めるってことでしょうか? そうだとするとかなり嫌
な感じだな...
0310nobodyさん04/06/12 13:33ID:FD8KxqwO
質問します

1.
ショッピングサイトを立ち上げているのですが、”決済する” のボタンを押すと、カード会社のサイトにジャンプし
、そのサイトで情報入力を行い、その戻りを受けてユーザに完了画面を出力しようと思います。

2.
こちらから、form post で、カード会社のCGIを呼び出し、カード情報入力画面をだします。
そのCGIは結果を success 又は ng でこちらに返してくるのですが、このままのつくりだと、
ユーザにカード情報入力後の画面に success , 又はngと ぽつんと表示され訳がわからない状態となります

3.
そこで、 form post属性で他のcgiを呼び出し、その結果を受けて、”xxxx円 決済が完了しました ありがとうございます
トップに戻る” と出したいのです。form post で呼び出したcgiの結果を判定する方法がわからないので、教えて下さい。
0311nobodyさん04/06/12 13:38ID:???
>>297
倫理マークアップじゃなくて論理マークアップな
0312nobodyさん04/06/12 13:50ID:???
>>310 少なくともスレ違い。ま,板違いだろうか。
0313nobodyさん04/06/12 14:09ID:???
>>310
良かったら、どこのサイトか教えてくれないか?
2chで質問しながら作るような奴が作ったサイトでは絶対に買物したくないからな。
0314nobodyさん04/06/12 15:25ID:???
カード会社ってCGIで決済してんの?
0315nobodyさん04/06/12 15:54ID:???
>>313
おまえみたいなのよくいるけど、実は居酒屋とかでカード使うほうがよっぽど危ないよ。

0316nobodyさん04/06/12 16:01ID:???
居酒屋でカード使う奴は居ないだろ。

そんな馬鹿な奴は挙手汁。
0317nobodyさん04/06/12 16:10ID:???
Perlについての質問箱 10箱目
http://pc5.2ch.net/test/read.cgi/tech/1085564875/223

0318nobodyさん04/06/12 16:51ID:???
>倫理マークアップじゃなくて論理マークアップな

ああ!!

いやマジで何なんだろうと悩んでたよ。<good>とか<evil>とかいうタグがあるのかと。
0319nobodyさん04/06/12 21:53ID:???
<chinko>タグ
0320nobodyさん04/06/13 11:52ID:???
>>316
居酒屋でも飲み屋でも使わないのおまい?
0321nobodyさん04/06/13 12:39ID:???
例えにマジレス、しかも粘着
アイタタタ
0322nobodyさん04/06/13 12:41ID:???
>>321
さらに亀レス
0323nobodyさん04/06/13 14:13ID:???
流石に亀ではないでしょ
032431304/06/13 15:17ID:???
>>315
残念だな、俺はアルコールアレルギーで、居酒屋も飲み屋も行かない。
0325nobodyさん04/06/13 15:25ID:???
かわいそうだな。
0326nobodyさん04/06/13 17:04ID:???
1: Perlでパックマンを作りたい
2: それでラマ本を読んでみたが
3: 画面の作り方すら分からない

よろしこ。
0327nobodyさん04/06/13 18:14ID:???
クライアントサイドで動かせる言語で作れよ
マジレスしてよかったのかな
0328nobodyさん04/06/13 18:33ID:???
>>326
GUI でやりたいのなら Perl/Tk とか Win32::GUI とか WideStudio とか調べれ。
0329nobodyさん04/06/13 19:01ID:???
オス。調べてくる。
コマンドプロンプトでとかは無理かい
0330nobodyさん04/06/13 19:37ID:???
>>326
Advanced Perl Programmingに、Perl/Tkで作った
テトリスの作例があるから参考にしてみたら?
コードだけなら下のURLからダウンロードできるよ。

ttp://examples.oreilly.com/advperl/
0331nobodyさん04/06/14 08:30ID:???
web製作板やWebProg板のスレタイを探したのですが
どこで質問すればいいのかわからなかったのでここで質問をします
スレ違いの場合は誘導お願いします

2chではread.cgiを使ってブラウザでも読めるようなcgiを作ってますが
cgiで引数を指定するのは?のはずなのにcgiの次が/で引数にはならないと思います
どうやったら?を入れなくても引数を指定することが出来るんでしょうか?
0332nobodyさん04/06/14 08:37ID:???
>>331
おまえ馬鹿?引数とか意味もわからず使うなよ。お前の言いたいのはformのmethodだろ。
form method で調べて来い
0333nobodyさん04/06/14 08:43ID:???
>>332
馬鹿?とか言ってるのにヒントをしっかりくれる優しい人がいてよかた。。。
なんか泣けてきた
ありがとう
0334nobodyさん04/06/14 08:53ID:???
+from methodでぐぐっても解りませんでした
どちらか片方の用語だけでも調べようと思い
perl +fromやperl method 用語などでもぐぐりましたが全然でてきません。。。
もう少しヒントをください
0335nobodyさん04/06/14 09:45ID:???
>>331>>334
>2chではread.cgiを使ってブラウザでも読めるようなcgiを作ってますが
>cgiで引数を指定するのは?のはずなのにcgiの次が/で引数にはならないと思います
>どうやったら?を入れなくても引数を指定することが出来るんでしょうか?
つまり Perl で CGI の 引数 について知りたいわけだろ?
自分で書いておいて何故わからんのか
0336nobodyさん04/06/14 10:09ID:???
>>334
はいはい
PATH_INFOでぐぐりなさい
そしてもうここでは聞かないでください
0337nobodyさん04/06/14 10:42ID:???
>>335
perlは全然知りません
Cを少しかじってるぐらいですが
ブラウザで?を入れると引数が入るのを以前確認しただけという知識です

>>336
ありがとうございます
>>331でも書きましたがスレ違いということならば
誘導先を教えてください
0338nobodyさん04/06/14 10:45ID:???
理解できました
>>336さん
本当にありがとうございました
0339nobodyさん04/06/14 11:12ID:???
やっと馬鹿が消えたか。それにしてもHTMLすら知らないとは・・・。
0340nobodyさん04/06/14 12:49ID:???
>>339
>>339
>>339
>>339
>>339
0341nobodyさん04/06/14 18:38ID:???
通販サイトをはじめて作ってるんだけど、注文はsendmailで流してもらって、その後
客に「この注文内容でいいですか?」みたいなメールを送りたいんだけど、毎回手打ちは面倒だから
perlでテンプレでも作って、注文内容や送り先とかを自動で埋め込むみたいなのを作りたい。

でも具体的にどういう設計にすればいいか思いつかない・・・

とりあえず注文メールにここから客へのメールが贈れます、みたいなURLを渡して
そこにアクセスするとその時の注文内容とかが書かれたメールの本文が既にできあがって
いて、ワンタッチで送信。

みたいなのがいいと思うんだけど、やっぱ注文受けたときに新規のファイルでも作って、その
URLをメールで渡すくらいしかないかな?なんかイケてないんだよね。
0342nobodyさん04/06/14 19:00ID:???
ここはコーディングのスレです。
0343nobodyさん04/06/14 20:05ID:???
↓次の人どうぞ〜
034434104/06/14 20:13ID:???
>>342>>343
探したけど、他に>>341のような質問するとこなかったよ。やっぱ駄目かな・・・
0345nobodyさん04/06/14 20:27ID:???
スレ違いだって言ってんのに駄々捏ねるな。
駄々捏ねたかったら自分のサイトで捏ねてろ。

http://e-words.jp/
この辺をお勧めする。
0346未承諾広告※ ◆TWARamEjuA 04/06/14 20:31ID:???
>>344
流れ的には問題ありありかもしれないけれど一つの方法として、
自分宛に送られてくる発注メール自体を「この注文内容でよろしいですか?」にして、
うけとったらそのまま発注者へ流せば手打ちの手間が減るですね(w
0347nobodyさん04/06/14 20:35ID:???
die "テスト:エラー";

とやってもエラー画面の表示が変わらないんだけど何がおかしいの?

環境はwin98/ie6/httpd142k/activeperl5.6/
0348nobodyさん04/06/14 20:38ID:???
activeperlとやらのマニュアル嫁。結構良く出来てるぞ。
034934104/06/14 20:42ID:???
>>346
おお!レスありがと!

「この注文内容でよろしいですか?」のメールを実際に贈るのは
コンピュータ全く知らない素人だからインターフェースをある程度のものにしなきゃ
と思ってる。

>>346のやり方で思ったけど、普通に注文を知らせるメール本文の下の方、というかある程度
感覚を空けて、客に出すメールの本文をくっつけておけば、後はそれをコピペ。みたいでもいいかも。

ただ、実際にやる人間がコピペができるかどうか・・・・;
035034704/06/14 20:44ID:???
>>348
じゃあここは何の為にあるの?・・・・・・って浮かんできたけど、読んでみる。ありがと。
0351nobodyさん04/06/14 20:48ID:???
質問するのはマニュアル読んだ後な、それでも分からなかったらって事。
0352nobodyさん04/06/14 21:03ID:???
>>346
お前は運用の板でネチョネチョやってろよ。
色んな板で糞コテの売名したいか?
0353nobodyさん04/06/14 21:04ID:???
>>349
だからスレ違いだって言われてるだろ。
ウザイからもう来るな。
0354nobodyさん04/06/14 21:13ID:???
UIのスレはここではない!
0355nobodyさん04/06/14 21:18ID:???
>>346
コテはうんざりだから必要もないのにいちいち名乗るな。
それこそ売名ならやめられんのかもしれんが。
本7とカポコンの悪臭だけでゲロゲロだから。
0356 04/06/15 13:21ID:???
WWW:Mechanizeを使おうとすると
Can't locate object method "requests_redirectable" via package "WWW::Mechanize"
(perhaps you forgot to load "WWW::Mechanize"?) at C:/Perl/site/lib/WWW/Mechanize
.pm line 156.
というエラーが出されるのですが、ソースでは
use WWW::Mechanize;
と宣言しています。原因はなんでしょうか?
0357nobodyさん04/06/15 14:41ID:???
>>356
だからここはコーディング質問スレだっていってんだろ!!!!!!
モジュールの使い方は専用のスレに行け!!!!!!!!!!!
0358nobodyさん04/06/15 15:08ID:???
if($res =~ m/!!!!!/) $flag = "厨房";
0359nobodyさん04/06/15 15:12ID:???
>>358=356
スレ違いな奴はくるな
0360nobodyさん04/06/15 16:21ID:dQxW4G/W
以下のような、1行に1件分の情報が記述されているタブ区切りテキストがあります。
このデータをブラウザから編集させたいと思うのですが、なにか参考になるモジュールなどは
ありませんでしょうか?
Perl5以上で動作するものがいいです。

-----
# 会員番号 名前 電話番号
0001山田 太郎090-1234-5678
0002山田 次郎090-1111-2222
-----
0361nobodyさん04/06/15 16:27ID:???
CGIとして使うならモジュールも糞もあるか?
0362nobodyさん04/06/15 16:53ID:???
ログを読み込んで<INPUT type="text">内に吐かせればいいんじゃないか?
もしかして俺は釣らr(
0363nobodyさん04/06/15 17:01ID:???
質問いいでしょうか。
メールアドレスを入力するフォーム部で、[0-9A-Za-z]と[@.-]以外の文字列が含まれていた場合、エラーを返す処理を行いたいと思います。
使用可能な文字列を配列@availableに入れるとして、$mailに配列@available内の文字以外のものがあれば○○する、という記述をしたいのです。

foreach (0 .. $#available) {
 if (index ($mail, $available[$_]) >= 0) {

こう書くと、@available内の文字があった場合に処理を行うということになりますが、
@available内の文字以外のものがあれば、という判定はどのように書けばいいのでしょうか。
0364nobodyさん04/06/15 17:12ID:???
>>363
> メールアドレスを入力するフォーム部で、[0-9A-Za-z]と[@.-]以外の
> 文字列が含まれていた場合、エラーを返す処理を行いたいと思います。

$mail =~ /[^\-.0-9\@A-Za-z]/ and error();
0365nobodyさん04/06/15 17:16ID:???
言われて見れば全くその通りで・・・
>>364氏感謝。何で正規表現の否定が思いつかなかったんだ orz
036636004/06/15 18:24ID:dQxW4G/W
>361
>CGIとして使うならモジュールも糞もあるか?

すいません、意味が分かりません。
0367nobodyさん04/06/15 18:27ID:???
意味が分かるようになるまで最低限御勉強しようね。
言葉が通じないのでは御話にならない。
0368nobodyさん04/06/15 18:41ID:???
>>366
お前がモジュールなんていう言葉を使うのは10年早い。
↓ここでCGIを探せ

【CGI】こんなCGI探してますver.13
http://pc5.2ch.net/test/read.cgi/hp/1081608108/
0369nobodyさん04/06/15 22:50ID:???
数行にわたって
ID:passという書式でかかれているdatファイルから
特定のIDとパスワードを検索してその文字列だけを書き換えたいのですがどうすればいいでしょうか?
教えて下さい。お願いします。
0370nobodyさん04/06/15 22:58ID:???
やることわかってるじゃん
open でファイル開くことから教えてくんかい?
037136904/06/15 23:25ID:???
ファイル読み書きはできます。
特定のIDとパスワードを検索してその文字列だけを書き換えたい
という処理の仕方をどうすればいいかわからないんです。よろしくお願いします。
0372nobodyさん04/06/15 23:28ID:???
>>371
読み込んで書き換えて上書きしろよ
0373nobodyさん04/06/15 23:32ID:???
>>371
ifを使え
0374nobodyさん04/06/16 00:15ID:???
ちょっとは自分で考えないのかね。
0375sage04/06/16 01:00ID:???
頭が無いんです
0376nobodyさん04/06/16 01:06ID:???
> 特定のIDとパスワードを検索してその文字列だけを書き換えたい
正規表現を15分でいいから勉強するよろし。
0377nobodyさん04/06/16 04:13ID:???
>>369
http://www.kt.rim.or.jp/%7ekbk/perl5.005/perlfaq5.html#How_do_I_change_one_line_in_a_fi
037836904/06/16 17:05ID:???
>>377
ありがとうございます。
0379nobodyさん04/06/17 12:14ID:???
質問いいでしょうか。
BBSでの投稿フォームの記入内容にNGワードが存在する場合にエラーを返す処理をしたいのです。
フォームはname,mail,textの3つのフィールドがあります。

@ng_word = ("逝ってよし");
# テキスト内を検索して、NGワードが存在した場合
foreach (0 .. $#ng_word) {
 if (index ($name, $ng_word[$_]) >= 0 || index ($mail, $ng_word[$_]) >= 0 || index ($text, $ng_word[$_]) >= 0) { 以下略

上記の4行目の判定部分なのですが、フィールドが増えるたびに
index ($mail, $ng_word[$_]) >= 0 ||
のような書き方を追加して書かなければならないのでしょうか。
$nameや$mailなどをあらかじめ配列に追加しておいて、配列内のそれらの変数を判定させると言う書き方はできませんか?
0380nobodyさん04/06/17 12:38ID:???
>>379
http://www.kt.rim.or.jp/%7ekbk/perl5.005/perlsyn.html#Foreach_Loops

my @ng_word = qw( ... );
foreach my $word (@ng_word) {
  foreach ($name, $mail, $text) {
    index($_, $word) > -1 && error();
  }
}
0381nobodyさん04/06/17 14:12ID:???
>>379です。
解決しました。レスありがとうございます。
0382nobodyさん04/06/18 08:52ID:???
すみません。正規表現について教えてください
文字列内に以下の条件を含む部分があるかどうかを
チェックするために正規表現を使ってみたいのですが
いかようにすればよいでしょうか?
?nnnn (nnnnは4桁の数字)
0383nobodyさん04/06/18 10:05ID:???
スレタイ嫁
でも俺すげー優しいからヒントをやろう。

0-9

あとは自分で考え。
スレタイ嫁
0384nobodyさん04/06/18 10:20ID:???
>>383
すげー優
しい


>>382
スレタイ嫁
0385nobodyさん04/06/18 10:48ID:???
できました。
"?[0-9]{4}"
0386nobodyさん04/06/18 10:49ID:???
スレタイ嫁ってなんですか?
0387nobodyさん04/06/18 10:49ID:???
それじゃダメだと思うが
どうダメかは正規表現道場スレで聞け
0388nobodyさん04/06/18 11:14ID:???
>>387
マジですか?
お願いします。教えてください。なにとぞなにとぞ
0389nobodyさん04/06/18 14:05ID:???
>どうダメかは正規表現道場スレで聞け
0390nobodyさん04/06/18 14:25ID:???
さてはわからないんですね?
0391nobodyさん04/06/18 14:58ID:???
まあ煽っても何も出ないんで該当スレに行くか諦めて下さい。
0392nobodyさん04/06/18 16:08ID:???
ワロタ
お前等面白い
0393nobodyさん04/06/18 20:06ID:???
perlと言うかjavaスクリプトも絡んでくるかと思いますが
フォームからPOSTで送信してcgiから帰って来る結果を小さいウインドウを別にポップアップして
そこに表示したいのですが、どうすればいいでしょうか?
教えて下さい。お願い致します。
0394nobodyさん04/06/18 21:11ID:???
>>393
http://pc5.2ch.net/test/read.cgi/hp/1087025773/
http://pc5.2ch.net/test/read.cgi/php/1086715675/
0395nobodyさん04/06/18 22:13ID:???
>>393
perlは全く関係ないじゃん
0396nobodyさん04/06/19 04:43ID:Bryn3NL2
質問です

ブラウザからあるperlのプログラムを起動して、データベースの更新をしているのですが、
これをバッチとして自動起動したいと思っています。
で、 perl xxxx.cgi  とすると、エラーになります。
どこでエラーになるかを調べたところ require xxxxx.cgi でrequireが正しくされていないようです。
perl はバッチ処理としては動かないのでしょうか?
0397nobodyさん04/06/19 07:02ID:???
requireをドライブ名からの絶対パスで指定すればいいんでないの?
0398nobodyさん04/06/19 07:28ID:Bryn3NL2
>>397
レスサンクスですが
絶対パスでもだめでした
0399nobodyさん04/06/19 09:50ID:???
1.プロ野球の順位を「変動勝ち点制」(と私が名づけたシステム)で
順位付けをしたいです。「変動勝ち点制」とは、1位のチームは6点、
2位のチームは5点、という具合に各チームがランキングポイントを
持っています。試合の勝者が相手チームのランキングポイントを獲得し、
トータルポイントに加算していきます。その日の順位によってランキング
ポイントは変化します。

2.以下にソースを貼り付けます。データを保存しているresult.datは
1行がこんな風になっています。「d,l,w:k,n,w:l,o,q」。":"で区切った
一番目の要素が勝者で、2番目が敗者です。3番目に"w"となって
いるのは試合が決着した場合、"q"は引き分けです。

3.エラーは出ないのですが、何も答えてはくれません。CPUが100%になって
いるので何かやってはいるみたいなのですが……。
040039904/06/19 09:50ID:???
#$?[0]はチームの頭文字。$?[1]はトータルポイント。
#$?[2]は昨年の順位=ランキングポイント。
@d=("H","0","6");@s=("L","0","5");@k=("Bu","0","4");
@n=("F","0","3");@l=("M","0","2");@o=("Bw","0","1");
#result.datからその日の試合結果を入力する
open (RESULT,"result.dat");
while ($result = <RESULT>){
 chop($result);
 while($x = split (/:/,$result)){
  while(@y = split(/,/,$x)){
   if($y[2] eq "w"){
    $$y[0][1]=$$y[0][1]+$$y[1][2];
   }else{
    $$y[0][1]=$$y[0][1]+($$y[1][2] / 2);
    $$y[1][1]=$$y[1][1]+($$y[0][2] / 2);
   }
  }
  #その日のランキングポイントを決める
  #鷹
  $rp=6;
  if($d[1]<$s[1]){$rp=$rp-1;}elsif($d[1]<$k[1]){$rp=$rp-1;}
  elsif($d[1]<$n[1]){$rp=$rp-1;}elsif($d[1]<$l[1]){$rp=$rp-1;}
  elsif($d[1]<$o[1]){$rp=$rp-1;}
  $d[2]=$rp;
  #あとは同じなので省略。猫、牛……と去年の順位にしたがって続きます
 }}
 close (RESULT);
#結果を出力
 print ("H\t$d[1]\n");print ("L\t$s[1]\n");print ("Bu\t$k[1]\n");
 print ("F\t$n[1]\n");print ("M\t$l[1]\n");print ("BW\t$0[1]\n")
0401nobodyさん04/06/19 10:17ID:???
>>396
perl -IC:/WINNT/system32 foo.cgi
-Iオプションでrequireするディレクトリを追加してみるとか

>>400
whileって何するのか勉強してこい
0402nobodyさん04/06/19 13:31ID:???
わいろ
0403nobodyさん04/06/19 14:47ID:Bryn3NL2
>>401
サンクスコ やってみます
0404nobodyさん 04/06/19 21:48ID:???
配列に格納されたハッシュの、特定のキーの値で配列をソートすることは出来るのでしょうか?
@array(
{'a'=>'value1','b'=>'1234'},
{'a'=>'value2','b'=>'4518'},
{'a'=>'value6','b'=>'4879'},
);
とあったとして、bの値でarrayをソートしたいのですが。
0405nobodyさん04/06/19 22:10ID:???
>>404
http://www.cc.rim.or.jp/~midorin/mad-p/perl/benkyou/199909/mgp00039.html
0406nobodyさん04/06/20 06:51ID:F4x9/MNB
どなたか教えてください
元々 Perl(CGI) で動いてたものを PHP へ移植したんですが、クライアントからの呼び出しが
a.cgi 固定で PHP を cgi として動かせないサーバで困っています
そこで a.cgi(Perl) は a.php を呼び出すだけの機能にしたいのですが Perl(CGI) から PHP は
どのように呼び出せばいいのでしょうか?
よろしくお願いします
0407nobodyさん04/06/20 12:09ID:???
>>406
<Files a.cgi>
 AddType application/x-httpd-php .cgi
</Files>

(w
■ このスレッドは過去ログ倉庫に格納されています