Perl コーディング初心者質問コーナー Part35
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
04/05/26 16:48ID:kkhhiYmo【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。
1: 自分はこう言う事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
ソース貼る時は、全角スペースでインデント忘れずに。
良い回答は良い質問から。一緒に勉強しましょう。
過去ログやお勧めサイトは >>2-10
0321nobodyさん
04/06/13 12:39ID:???アイタタタ
0323nobodyさん
04/06/13 14:13ID:???0325nobodyさん
04/06/13 15:25ID:???0326nobodyさん
04/06/13 17:04ID:???2: それでラマ本を読んでみたが
3: 画面の作り方すら分からない
よろしこ。
0327nobodyさん
04/06/13 18:14ID:???マジレスしてよかったのかな
0329nobodyさん
04/06/13 19:01ID:???コマンドプロンプトでとかは無理かい
0330nobodyさん
04/06/13 19:37ID:???Advanced Perl Programmingに、Perl/Tkで作った
テトリスの作例があるから参考にしてみたら?
コードだけなら下のURLからダウンロードできるよ。
ttp://examples.oreilly.com/advperl/
0331nobodyさん
04/06/14 08:30ID:???どこで質問すればいいのかわからなかったのでここで質問をします
スレ違いの場合は誘導お願いします
2chではread.cgiを使ってブラウザでも読めるようなcgiを作ってますが
cgiで引数を指定するのは?のはずなのにcgiの次が/で引数にはならないと思います
どうやったら?を入れなくても引数を指定することが出来るんでしょうか?
0332nobodyさん
04/06/14 08:37ID:???おまえ馬鹿?引数とか意味もわからず使うなよ。お前の言いたいのはformのmethodだろ。
form method で調べて来い
0334nobodyさん
04/06/14 08:53ID:???どちらか片方の用語だけでも調べようと思い
perl +fromやperl method 用語などでもぐぐりましたが全然でてきません。。。
もう少しヒントをください
0335nobodyさん
04/06/14 09:45ID:???>2chではread.cgiを使ってブラウザでも読めるようなcgiを作ってますが
>cgiで引数を指定するのは?のはずなのにcgiの次が/で引数にはならないと思います
>どうやったら?を入れなくても引数を指定することが出来るんでしょうか?
つまり Perl で CGI の 引数 について知りたいわけだろ?
自分で書いておいて何故わからんのか
0337nobodyさん
04/06/14 10:42ID:???perlは全然知りません
Cを少しかじってるぐらいですが
ブラウザで?を入れると引数が入るのを以前確認しただけという知識です
>>336
ありがとうございます
>>331でも書きましたがスレ違いということならば
誘導先を教えてください
0339nobodyさん
04/06/14 11:12ID:???0341nobodyさん
04/06/14 18:38ID:???客に「この注文内容でいいですか?」みたいなメールを送りたいんだけど、毎回手打ちは面倒だから
perlでテンプレでも作って、注文内容や送り先とかを自動で埋め込むみたいなのを作りたい。
でも具体的にどういう設計にすればいいか思いつかない・・・
とりあえず注文メールにここから客へのメールが贈れます、みたいなURLを渡して
そこにアクセスするとその時の注文内容とかが書かれたメールの本文が既にできあがって
いて、ワンタッチで送信。
みたいなのがいいと思うんだけど、やっぱ注文受けたときに新規のファイルでも作って、その
URLをメールで渡すくらいしかないかな?なんかイケてないんだよね。
0342nobodyさん
04/06/14 19:00ID:???0343nobodyさん
04/06/14 20:05ID:???0345nobodyさん
04/06/14 20:27ID:???駄々捏ねたかったら自分のサイトで捏ねてろ。
http://e-words.jp/
この辺をお勧めする。
0346未承諾広告※ ◆TWARamEjuA
04/06/14 20:31ID:???流れ的には問題ありありかもしれないけれど一つの方法として、
自分宛に送られてくる発注メール自体を「この注文内容でよろしいですか?」にして、
うけとったらそのまま発注者へ流せば手打ちの手間が減るですね(w
0347nobodyさん
04/06/14 20:35ID:???とやってもエラー画面の表示が変わらないんだけど何がおかしいの?
環境はwin98/ie6/httpd142k/activeperl5.6/
0348nobodyさん
04/06/14 20:38ID:???0349341
04/06/14 20:42ID:???おお!レスありがと!
「この注文内容でよろしいですか?」のメールを実際に贈るのは
コンピュータ全く知らない素人だからインターフェースをある程度のものにしなきゃ
と思ってる。
>>346のやり方で思ったけど、普通に注文を知らせるメール本文の下の方、というかある程度
感覚を空けて、客に出すメールの本文をくっつけておけば、後はそれをコピペ。みたいでもいいかも。
ただ、実際にやる人間がコピペができるかどうか・・・・;
0351nobodyさん
04/06/14 20:48ID:???0354nobodyさん
04/06/14 21:13ID:???0355nobodyさん
04/06/14 21:18ID:???コテはうんざりだから必要もないのにいちいち名乗るな。
それこそ売名ならやめられんのかもしれんが。
本7とカポコンの悪臭だけでゲロゲロだから。
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:???だからここはコーディング質問スレだっていってんだろ!!!!!!
モジュールの使い方は専用のスレに行け!!!!!!!!!!!
0358nobodyさん
04/06/15 15:08ID:???0360nobodyさん
04/06/15 16:21ID:dQxW4G/Wこのデータをブラウザから編集させたいと思うのですが、なにか参考になるモジュールなどは
ありませんでしょうか?
Perl5以上で動作するものがいいです。
-----
# 会員番号 名前 電話番号
0001山田 太郎090-1234-5678
0002山田 次郎090-1111-2222
-----
0361nobodyさん
04/06/15 16:27ID:???0362nobodyさん
04/06/15 16:53ID:???もしかして俺は釣ら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:???> メールアドレスを入力するフォーム部で、[0-9A-Za-z]と[@.-]以外の
> 文字列が含まれていた場合、エラーを返す処理を行いたいと思います。
$mail =~ /[^\-.0-9\@A-Za-z]/ and error();
0366360
04/06/15 18:24ID:dQxW4G/W>CGIとして使うならモジュールも糞もあるか?
すいません、意味が分かりません。
0367nobodyさん
04/06/15 18:27ID:???言葉が通じないのでは御話にならない。
0368nobodyさん
04/06/15 18:41ID:???お前がモジュールなんていう言葉を使うのは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 でファイル開くことから教えてくんかい?
0371369
04/06/15 23:25ID:???特定のIDとパスワードを検索してその文字列だけを書き換えたい
という処理の仕方をどうすればいいかわからないんです。よろしくお願いします。
0374nobodyさん
04/06/16 00:15ID:???0375sage
04/06/16 01:00ID:???0376nobodyさん
04/06/16 01:06ID:???正規表現を15分でいいから勉強するよろし。
0377nobodyさん
04/06/16 04:13ID:???http://www.kt.rim.or.jp/%7ekbk/perl5.005/perlfaq5.html#How_do_I_change_one_line_in_a_fi
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:???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();
}
}
0382nobodyさん
04/06/18 08:52ID:???文字列内に以下の条件を含む部分があるかどうかを
チェックするために正規表現を使ってみたいのですが
いかようにすればよいでしょうか?
?nnnn (nnnnは4桁の数字)
0383nobodyさん
04/06/18 10:05ID:???でも俺すげー優しいからヒントをやろう。
0-9
あとは自分で考え。
スレタイ嫁
0385nobodyさん
04/06/18 10:48ID:???"?[0-9]{4}"
0386nobodyさん
04/06/18 10:49ID:???0387nobodyさん
04/06/18 10:49ID:???どうダメかは正規表現道場スレで聞け
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:???フォームからPOSTで送信してcgiから帰って来る結果を小さいウインドウを別にポップアップして
そこに表示したいのですが、どうすればいいでしょうか?
教えて下さい。お願い致します。
0394nobodyさん
04/06/18 21:11ID:???http://pc5.2ch.net/test/read.cgi/hp/1087025773/
http://pc5.2ch.net/test/read.cgi/php/1086715675/
0396nobodyさん
04/06/19 04:43ID:Bryn3NL2ブラウザからあるperlのプログラムを起動して、データベースの更新をしているのですが、
これをバッチとして自動起動したいと思っています。
で、 perl xxxx.cgi とすると、エラーになります。
どこでエラーになるかを調べたところ require xxxxx.cgi でrequireが正しくされていないようです。
perl はバッチ処理としては動かないのでしょうか?
0397nobodyさん
04/06/19 07:02ID:???0398nobodyさん
04/06/19 07:28ID:Bryn3NL2レスサンクスですが
絶対パスでもだめでした
0399nobodyさん
04/06/19 09:50ID:???順位付けをしたいです。「変動勝ち点制」とは、1位のチームは6点、
2位のチームは5点、という具合に各チームがランキングポイントを
持っています。試合の勝者が相手チームのランキングポイントを獲得し、
トータルポイントに加算していきます。その日の順位によってランキング
ポイントは変化します。
2.以下にソースを貼り付けます。データを保存しているresult.datは
1行がこんな風になっています。「d,l,w:k,n,w:l,o,q」。":"で区切った
一番目の要素が勝者で、2番目が敗者です。3番目に"w"となって
いるのは試合が決着した場合、"q"は引き分けです。
3.エラーは出ないのですが、何も答えてはくれません。CPUが100%になって
いるので何かやってはいるみたいなのですが……。
0400399
04/06/19 09:50ID:???#$?[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:???perl -IC:/WINNT/system32 foo.cgi
-Iオプションでrequireするディレクトリを追加してみるとか
>>400
whileって何するのか勉強してこい
0402nobodyさん
04/06/19 13:31ID:???0403nobodyさん
04/06/19 14:47ID:Bryn3NL2サンクスコ やってみます
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:???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:???<Files a.cgi>
AddType application/x-httpd-php .cgi
</Files>
(w
0408nobodyさん
04/06/20 14:13ID:???open(IN,"$logfile") || &error("ファイルがオープン出来ませんでした。");
@nakami=<IN>;
close(IN);
$log = "$title<>$time<>message\n";
unshift(@nakami,"$log");
open(OUT,">$logfile") || &error("ファイルに書き込み出来ませんでした。");
print (OUT "@nakami");
close(OUT);
と書いたのですがログファイルの先頭にスペースがついていってしまいます。
$title<>$time<>message
$title<>$time<>message
$title<>$time<>message
とこういう風に上書きしていくとどんどん増えていってしまいます。
どこがわるいのでしょうか?教えて下さい。お願いします。
0409nobodyさん
04/06/20 14:38ID:???ところで @nakami=<IN>; って、
昔俺が赤ラクダ本を読んだときには「そんなことするな」と書いてあったような記憶が
あるんだが、最近はみんなやってることなの?
ファイルを全部いっぺんに読み込むからメモリが膨れ上がって、
共用サーバだと結構世の中の迷惑なんじゃないかという気がするんだが。
一行毎に処理していたフィルタ全盛時代の美徳はもはや失われてしまったのか。
0411406
04/06/20 15:10ID:???ありがとうございます
これって apache の設定ですか?
であればレンタル鯖なのでいじれないんです
他になにかいいアイディアはないでしょうか
よろしくお願いします
0412nobodyさん
04/06/20 15:42ID:???@nakami=<IN>;
close(IN);
$log = "$title<>$time<>message";
unshift(@nakami,"$log");
open(OUT,">$logfile") || &error("ファイルに書き込み出来ませんでした。");
$" = "\n";
print (OUT "@nakami");
close(OUT);
0414406
04/06/20 16:19ID:???0415nobodyさん
04/06/20 16:36ID:???my @new = sort{ $a->{b} <=> $b->{b} } @array;
>>406
print (OUT @nakami);
このような配列があるときに、配列の一部に存在する
3, 7, 5の数字を使ってソートしたいです。
こう並べ替えたい↓
@list = (name<>pass<>7, name<>pass<>5, name<>pass<>3);
のですが、うまく処理する方法が思いつきません。
よろしくお願いします。
0419nobodyさん
04/06/20 22:34ID:???@list =(
"name3<>pass3<>3",
"name7<>pass7<>7",
"name5<>pass5<>5");
@array = sort{(split(/<>/,$b))[2] <=> (split(/<>/,$a))[2]}@list;
こんな感じか?
もうちょい綺麗な書き方ありそうだが…
■ このスレッドは過去ログ倉庫に格納されています