【Perl】初心者コーナーPart11
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
02/03/27 12:53ID:wAXxxOxPいらっしゃーい、Perlの「コーディング」で困ってる人のスレです。
1:自分はこう言う事がしたい。
2:それでこんな風にやってみたが・・・
3:それだとこんなエラーが出て上手く行かなかった。
1と3が無いと誰も答えられないよ、良い回答は良い質問から。
一緒に勉強しましょう。
参考書籍はこちら【【Perl,CGI】参考書籍 第2版 】
http://pc.2ch.net/test/read.cgi/php/988809842/
CGIの質問はこちら【CGIだけどなんか質問ある Pert 5.01 】
http://pc.2ch.net/test/read.cgi/php/1015127347/l50
その他の雑多な話題は、【CGIに依存しないPerlの話題一般】
http://pc.2ch.net/test/read.cgi/php/991313362/
過去ログ、その他の役立ち情報は>>2-10を見よう。
0689nobodyさん
02/04/19 01:19ID:qPOTdo2b$d = "aaabbb";
$d =~ s/$a/b/;
とやったら、
s/a\(\.\*\)a/b/;
か、
s/a(.*?)a/b/;
のどちらになるんでしょうか?
0690Dream 黒星
02/04/19 01:30ID:???使い方はわかるがもっとよりよい記述法なりがあるということだろ。
そのよりよい(使い勝手のよい)のを教えてくれよ。
0691nobodyさん
02/04/19 01:47ID:Z7cLdJRBうるさいっ!ばか!
sでいいじゃないかっ!
0694Dream 黒星
02/04/19 02:19ID:???688が、先のことを言った本人だという根拠は?
わたしには685および688のIDが???である以上、両者が同一人物である
という根拠のない決め付けはできないのだが、オマエは決め付けで判断する
ダメポにも匹敵するダメダメプログラマーだろ!
0695nobodyさん
02/04/19 02:34ID:???0696Dream 黒星
02/04/19 02:52ID:???金融機関コードの違いさえも認識できずにろくなテストデータも作れずに
金融不安を巻き起こすナンチャッテプログラマー集団のことだ!
0697nobodyさん
02/04/19 03:06ID:???0698nobodyさん
02/04/19 03:14ID:???(゚Д゚)ハァ?
おれは 黒 星 先 生 に訊いたんだよ。なんでお前が答えるんだよ。
おれはいつかお前がDream 黒星と 黒 星 先 生 とを妄想気味に同一人物と取り違えて
ダメポにも匹敵する根拠の無い思い上がりをやらかすんじゃないかと心配だったのだが
まさかこうも簡単に事が運ぶとは・・・(w
0699黒 星 先 生
02/04/19 03:35ID:???s/ダメポ/Dream 黒星/g;
Dream 黒星に関する話題は関連スレで。
http://pc.2ch.net/test/read.cgi/php/991102630/
0700Dream 黒星
02/04/19 03:45ID:???寂しいんだね。こっちは見てて寒かったよ。今夜はあったまって寝るよ。
0701nobodyさん
02/04/19 05:14ID:???0702nobodyさん
02/04/19 05:57ID:???0704nobodyさん
02/04/19 07:14ID:???0706687
02/04/19 08:09ID:???ごめん。
きみのカキコは冗長ではなく、適切、いや言葉が足りないくらいだった。
>>690には
「正規表現の[tr]って使いにくいと思った初心者でした。 」
という表現でさえ、初心者であることが伝わらなかったのだから・・・
0707nobody
02/04/19 09:23ID:???展開はまず"..."で囲った時に一回起こる => "a(.*?)a"
これは普通の文字列展開ね。だからみてわかるように何も展開
するところがないのでそのまんま。
次に正規表現として使用した時に おこる => s/$a/b/;
この場合$aを展開してるわけで、$aの中身は関係ない。すなわち s/a(.*?)a/b/;となる。
というわけでもしマッチしたらそのマッチした文字列が$1に入る事になる。
0708nobodyさん
02/04/19 11:32ID:???はじめのほうから読ませてもらったけど、論理的にはキミの負けだと思う。
朝早くから...よほど悔しかったんだね。
ダメポって、ツボにはまりそー。
0709nobodyさん
02/04/19 11:43ID:???0711nobodyさん
02/04/19 11:48ID:???0712nobodyさん
02/04/19 13:12ID:???ログインページはGETもPOSTも使えるため、
・・・index.asp?name=AAA&pass=BBB
でログインできました。
検索結果のページもGETもPOSTも使えるため、
一度ログインしていれば、・・・result.asp?word=XXXXX
を開けばページ内容が保存されます。
これをperlでやろうとしました。
use LWP::Simple
$x = get("・・・index.asp?name=AAA&pass=BBB");
print $x;
$y = get("・・・result.asp?word=XXXXX");
print $y;
ところがこれだと、$xはログイン後のページが正しく表示されるのですが、
$yは、ログインしていないとみなされて、ログインページに飛ばされた内容が
表示されてしまいます。
解決策のヒントをよろしくお願いします。
0713nobodyさん
02/04/19 13:12ID:1w9waxQZhttp://choco.2ch.net/test/read.cgi/news/1019188835/
0714nobodyさん
02/04/19 14:18ID:???何故一度ログインすればその後はName/Pass無しでもログインしているとみなされるのか。
それを考えろ。
まぁHTTP-Headersでも見てみなさいってこった。
0718712
02/04/19 19:52ID:???HTTP::Headersというやつでしょうか?
なんとなく調べるべきことがわかりました。
ありがとうございます!
ところで・・・
調べるのは調べるんですが、そもそも私が
やろうとしてることは可能なことなんですかね?(汗
0719nobodyさん
02/04/19 20:05ID:sPCEXxH7さて、今回はCGI RESCUEにてダウンロードした「マルチパート対応
フォームメール」(form2mail.cgi)を使っています。
その中の機能でファイルをアップロードしてメールに添付する事が
できるのですが、画像ファイルを添付した所、メールで受信して
画像を見ると画像が一部壊れてしまっています。(上部は大丈夫
だけど、下部にいくにつれて緑色になってたりノイズが入ったり
して化けてしまいます)
どうしたら、画像が壊れずに送れるのでしょうか?
0720nobodyさん
02/04/19 20:08ID:???HTTPのヘッダが関係あるかどうかは分からんよ。
>何故一度ログインすればその後はName/Pass無しでもログインしているとみなされるのか。
察するに、これがCookieで実現されている可能性があると俺は考えたわけだ。
これが正解なら、取得したヘッダを調べりゃ分かる。
0724712
02/04/20 00:02ID:???なるほど。
たしかにヘッダ(これがヘッダなのかな、と自分が想像するもの)
の一番下の行に、クッキーな文字列がありました。
数字の羅列ではありましたが。
0725nobodyさん
02/04/20 00:08ID:???その数字の羅列を解析する必要はない。少なくとも、自ら解析コードを書く必要は無い。
要は自作のUserAgentが「Cookieを理解するUserAgentが行って然るべき返信」をすればいいのだから。
0726nobodyさん
02/04/20 01:42ID:gkcEnfWM0727nobodyさん
02/04/20 01:47ID:???0729nobodyさん
02/04/20 05:25ID:???何か不具合でもあるのでしょうか?
古い方がバイト数少ないので
その分サーバ負荷が軽減されるのでは?と思い
質問しました。
0730nobodyさん
02/04/20 05:35ID:???バージョンアップというのは機能を追加、強化したりバグを修正したりするものだから
最新バージョンのほうがよいと思う。
そっちのほうで負荷軽減するならスクリプトのほうで軽減する努力した方がいいとおもう
0731nobodyさん
02/04/20 05:41ID:???使ってるのか?それならPerlが起動しただけでヤバイな。
C言語の経験がないような人ってのは、変な事に気を遣うね。
そんなこと気にする暇があったら自分のコードを見直した方がいいと思うよ。
0733nobodyさん
02/04/20 07:28ID:???cgi-lib.plやjcode.plって使う必要無いような気がするんだが
SEX
0734nobodyさん
02/04/20 07:39ID:???可能ですか?
可能であればどうやればいいですか?
0735nobodyさん
02/04/20 07:56ID:???time()って秒数を返してくるんだから秒の部分を出力しないって
なんのこっちゃ・・・
それともこういうこと?
use Time::Local;
## 本当の時間が12時0分52秒だったら12時0分0秒に変換
my $secs = timelocal( 0, (localtime( time() )[1..5] );
0738734
02/04/20 11:22ID:???ネタニ マジレス オバカサン
0740nobodyさん719
02/04/20 11:44ID:f9E3OCx3はい。binmodeを3ヶ所に入れてみたのですが変りませんでした。
---------------------1
sub sendmail {
if (!open(OUT,"| $nkf -j | $sendmail -t")) { &error('Error'); }
#ADD--->start
binmode(BIN);
#ADD--->end
$host = $ENV{'REMOTE_HOST'};
---------------------2
sub send_mix {
・
・
if (open(UU,"$UUENCODE $tmp$filenum $filename |")) {
#ADD--->start
binmode(BIN);
#ADD--->end
@UUFILE = <UU>;
---------------------3
sub writebin {
・
・
if (!open(BIN,"> $tmp$filenum")) { &error('Error','アップロードファイルの一時ファイルが作成できません.<br>','テンポラリーフォルダのパーミッションを確認してください.'); }
#ADD--->start
binmode(BIN);
#ADD--->end
print BIN $FILEDATA[$file];
---------------------
0741nobodyさん719
02/04/20 11:45ID:f9E3OCx3残すようにしてその画像を確認した所、
---------------------1
sub send_mix {
・
・
print OUT @UUFILE;
}
#DEL--->start
#if (-e "$tmp$filenum") { unlink("$tmp$filenum"); }
#DEL--->end
}
print OUT "--$bound\-\-\n";
---------------------
サーバーにアップされた時点では画像は崩れていませんでした。
なので、メール送信した時に崩れてしまっているのかな?と
考えています。
※ちなみに、サーバーOSはUNIXです。
0744nobodyさん
02/04/20 12:22ID:???0745preference
02/04/20 13:10ID:???原因わかる?
Unrecognized character \202 at ./fmail.cgi line 7. Content-type:text/html Unrecognized character \202 at ./fmail.cgi line 7. Content-type:text/html Unrecognized character \202 at ./fmail.cgi line 7.
0746nobodyさん
02/04/20 13:19ID:???ナンデスカコレハ
0748preference
02/04/20 13:35ID:???sub obtiby{local($mailhost,$mailhostip);&sbfzwj(0);if(&mxomee == 1){&hzyfwg('SEND MAIL',<<_F);<p>すでに指定したメールアドレスにメールを送っています。</p>
<p>メールの中に書いてある確認キーを入力してから、もう一度送信してください。</p>
<p>誤って紛失してしまった場合は次の日まで待っていただき、もう一度再発行を受けて下さい。
$fd
_F
exit(0);}
eval{$SIG{ALRM}=sub{die"(Time Out)\n"};alarm 20 if($^O!~/Win/i);&tpkfcs($mail, $sysopmail);alarm 0 if($^O!~/Win/i);};
if($@ ne '' || $?){&hzyfwg('SEND MAIL',"<p>メールサーバエラー $@</p>");}else{&hzyfwg('SEND MAIL',<<_F);<p>確認キー発行申\請を受け付けました。</p>
0749nobodyさん
02/04/20 13:49ID:???原因はエラー表示そのままで、
「fmail.cgiの7行目にへんな文字(8進で202=16進で82)が混じってる」
からなんだけど、fmail.cgiの1〜7行めまでを見せてくれないとわからない。
>>748の一行目って、fmail.cgiの1行目なの?
0750nobodyさん
02/04/20 13:50ID:???すげーソースだな。正直、こんなに電波がゆんゆん逝ってるソースは久しぶりに見た。
0751nobodyさん
02/04/20 13:50ID:???7行目に日本語混ざってんだろ、どうせ。ヴォケ。糞。
0752712
02/04/20 14:38ID:???わかったような、わからないような・・・・・です。
「LWP::UserAgentを使えばよい」ということですね。やってみます!
>その数字の羅列を解析する必要はない。
>少なくとも、自ら解析コードを書く必要は無い。
>要は自作のUserAgentが
>「Cookieを理解するUserAgentが行って然るべき返信」をすればいいのだから。
0753nobodyさん
02/04/20 14:51ID:???電波の擬音語って「ゆんゆん」なのか。
いやどーでも良いんだけど
0754nobodyさん
02/04/20 14:54ID:???綴り変
0755nobodyさん
02/04/20 14:54ID:FTp8XsfB漏れはActive Perl をWindows2000にインストールして、メモ帳とかの普通のテキストエディタでソース書いて、a.plとかで保存して、DOSプロンプト立ち上げて
perl a.pl
とかやってますけど、CPad みたいに効率のいい勉強環境ないですか?
0756nobodyさん
02/04/20 15:16ID:???漏れはmuleをパッケージでFreeBSDに入れて、mule -nwで起動してから
セーブ、サスペンド、.M-p[RET],fg
ってやってる。
0757nobodyさん
02/04/20 15:32ID:???こういう人は、何を与えても効率よく使えない人。
0758nobodyさん
02/04/20 16:23ID:???漏れはCPadてものを知らないのだが
MacPerl(自前コンソールとエディタ内蔵
winならCopal
簡単な構文チェックにいいよ
0759nobodyさん
02/04/20 16:26ID:sMz1eiXo@array1 = qw[2 2 2];
@array2 = qw[3 3 3];
出力
1 2 3
1 2 3
1 2 3
の様に各配列の要素を順番に一つずつ表示させる上手い方法は無いでしょうか?
0761nobodyさん
02/04/20 16:37ID:???0762nobodyさん
02/04/20 16:40ID:FTp8XsfBすごくいいです。ありがとうございます。
0763nobodyさん
02/04/20 18:03ID:sMz1eiXoforeach(a..c){
print $_;
}
}
この場合1度目の0..3は2度目のforeach文中では何て言う変数に
格納されてるんですか?
0764nobodyさん
02/04/20 18:47ID:???print 'LOOP1 = ' . $_ . "\n";
for(a..c){
print 'LOOP2 = ' . $_ . "\n";
}
print 'LOOP1 = ' . $_ . " (゚Д゚;)\n\n";
}
0766nobodyさん
02/04/20 19:21ID:FTp8XsfBchopにmが増えただけなの?
なんでmが付け加えられたの?
0767nobodyさん
02/04/20 19:34ID:???0768nobodyさん
02/04/20 19:41ID:FTp8XsfB0769nobodyさん
02/04/20 19:47ID:???0770nobodyさん
02/04/20 20:02ID:???0772nobodyさん
02/04/20 20:19ID:???\nのnだとか言ったらアホとしか思えない。
0774nobodyさん
02/04/20 21:04ID:FTp8XsfBおお、ようやく理解できました。
0775nobodyさん719
02/04/21 00:56ID:86gzo8Agバイナリモードにしてみると良いというのを見かけましたので、これを
追加してみたのですが上手くいきませんでした。
>746さん、もしかして「binmode(BIN)」のパラメータの指定が間違って
いますか?ネットで調べて「binmode(STDOUT)」や「binmode($filenum)」
に変更してみたのですが状況は変りませんでした。
しかもよく調べてみると、binmodeはサーバーOSがWindows系の場合の
対応でUNIXでは必要ないとの事らしいので、この対応は意味が無いのかな?
と考えています。
そこで、はじめは自分のHTMLに組み込んで使っていたので、サンプルの
HTMLとCGIをほぼそのまま(変更したのは、環境パスと送信先メールアドレス
と戻り先URLぐらい)の状態でサーバーにアップロードしてから実行しても
あいかわらず画像が崩れてしまい、状況は変りませんでした。
何か他に疑う所はありますでしょうか?
0776nobodyさん
02/04/21 00:58ID:???まずbinmode()についての理解を深めなさい。
動作の解らない関数をコードに入れるなんてナンセンス。
予備知識としてUNIXとDOSのテキストファイル形式の違いも勉強するとなお良し。
0777キリ番厨
02/04/21 02:06ID:???0779nobodyさん
02/04/21 02:27ID:???おせっかい野郎登場ってか?
0782nobodyさん
02/04/21 04:34ID:5EokjXuO煽りにマジフォローしなくても…。
0784nobodyさん
02/04/21 08:39ID:1/Tdsylw配列@a=("hoge1","hoge2","hoge3"〜)で@aの要素として存在する文字列に関して
連想配列%flagを$flag{'hoge1'}=1
というふうにしたいのです。
foreach $_ (@a) {$flag[$_] = 1;}
とするとflagは全部1になってしまいます。
どのようにすればうまく行きますか?
0785nobodyさん
02/04/21 09:02ID:zdYHTsmZちょっと変えて
$n=1;
for ( @a ) { $flag[$_] = $n; $n++; }
とかどうでしょう。
0787nobodyさん
02/04/21 10:00ID:???おまえがどうしたいのかわからないよ。
hoge2の時は?hoge3の時は?
■ このスレッドは過去ログ倉庫に格納されています