【Perl】初心者コーナー Part12
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001nobodyさん
02/04/27 23:17ID:1NNXdNspいらっしゃーい、Perlの「コーディング」で困ってる人のスレです。
1:自分はこう言う事がしたい。
2:それでこんな風にやってみたが・・・
3:それだとこんなエラーが出て上手く行かなかった。
1と3が無いと誰も答えられないよ、良い回答は良い質問から。
一緒に勉強しましょう。
CGIの質問は【CGIだけどなんか質問ある Pert 6 】
http://pc.2ch.net/test/read.cgi/php/1019561283/
参考書籍の話題は【【Perl,CGI】参考書籍 第2版 】
http://pc.2ch.net/test/read.cgi/php/988809842/
その他の雑多な話題は、【CGIに依存しないPerlの話題一般】
http://pc.2ch.net/test/read.cgi/php/991313362/
スクリプトの改造依頼は 【スクリプト改造工房 Part4 】
http://pc.2ch.net/test/read.cgi/php/1012839651/
過去ログ、その他の役立ち情報は>>2-10を見よう。
0855nobodyさん
02/05/24 02:28ID:???Error 500
CGI エラー - Content-Type ヘッダが正しくありません。
CGI 出力メッセージ:
Bareword found where operator expected at C:\inetpub\WWWROOT\testbbs.cgi line 33
, near "$myaction ep"
(Missing operator before ep?)
String found where operator expected at C:\inetpub\WWWROOT\testbbs.cgi line 33,
near "ep 'write'"
(Do you need to predeclare ep?)
Bareword found where operator expected at C:\inetpub\WWWROOT\testbbs.cgi line 35
, near "$mytitle ep"
(Missing operator before ep?)
String found where operator expected at C:\inetpub\WWWROOT\testbbs.cgi line 35,
near "ep ''"
(Do you need to predeclare ep?)
syntax error at C:\inetpub\WWWROOT\testbbs.cgi line 33, near "$myaction ep "
Execution of C:\inetpub\WWWROOT\testbbs.cgi aborted due to compilation errors.
ローカルでテストできる環境作れ。
http://tohoho.wakusei.ne.jp/wwwcgi6.htm
0856nobodyさん
02/05/24 02:52ID:???質問の意味が分からない。具体的に何がしたいのか書いてくれ。
aやbの条件を変えて、とかワケワカラン。
個人的にはあまり多次元にならないようにした方がいいと思う。
二次元配列で値のソートをする場合こんな感じ?
my @array;
for my $one (0..9) {
for my $two (0..9) {
$array[$one][$two] = $one * $two;
}
}
@sorted_by_value = sort { $b <=> $a } map { @{$array[$_]} } 0..$#array;
print join "\t",@sorted_by_value;
0857nobodyさん
02/05/24 03:22ID:???構文チェックだけ。
>$mytitle ep ''
↑ 4個所ほど ↓ 3個所くらい(関係無いけど、なんでbmp?)
>$myurl = "<<a href=$myurl><img src="home.bmp"></a>>"
↓ FOOTの後ろにオマケが。
>FOOT
0858854
02/05/24 04:31ID:???掲示板が表示されるようになりました
が、書き込みのところがおかしいみたいなのでまだ調整が必要なようです。
調整はひとまず寝てからにします。どうもありがとうございました。
0860nobodyさん
02/05/24 07:34ID:???&boo( @foo );
sub boo
{
パラメーターとして連想配列が
渡ってくるんだけど、
どうやって参照するのか解らないっ!
foreach $k ( keys @_ ) {
print "$k = $_{$k}\n";
}
なんか、違う・・・気が・・・する・・・
}
0861nobodyさん
02/05/24 08:04ID:???0862nobodyさん
02/05/24 09:43ID:???貴方は@fooを連想配列だと思っているのか、
それともデリファレンスの方法がわからないのにリファレンスを使おうとしているのか、
どっちですか。
>>861
File::Pathのrmtree
#!perl
use File::Spec;
rmtree [ '/', @other_path ], $is_verbose, $is_safe;
0863nobodyさん
02/05/24 10:20ID:???0865nobodyさん
02/05/24 12:16ID:RsaAAUuOSSLサーバー内のCGIからSendmailを使ってメール送信する場合
その内容は暗号化されるのでしょうか?
具体的には、アンケートフォームを、セキュアディレクトリ内で動かして
その内容をメールで送信したいのですが・・・・
0867nobodyさん
02/05/24 12:54ID:RsaAAUuOとかうたっておきながら注文内容がそのままメールで来るのって、
ぜんぜん意味が無いってこと?
0868nobodyさん
02/05/24 13:03ID:???インターネット上で勉強していたんですが、=~の意味がイマイチ分かりません。
誰か教えてください・・・。こんな初歩的な質問をしてスミマセン。
0869nobodyさん
02/05/24 13:26ID:JeawxLYiDBMってロックできないのでしょうか?
0870質問
02/05/24 13:49ID:???ActivePerl&Apacheをインストールしってプレーンテキストで文字を表示
する事は出来たんですが、HTMLをCGIスクリプトで表示させようと思ったら
エラーが出ました。
↓↓
#! c:/perl/bin/perl
# CGIヘッダーの出力
print "Content-type: text/html\n\n";
# HTMLの出力
print "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\">\n";
print "<html>\n";
print "<head><title>Hello HTML</title></head>\n";
print "<body><p>これは、HTML文章の例です。</p></body>\n";
print "</html>";
どうしてなんでしょう?
0871nobodyさん
02/05/24 13:54ID:???> いらっしゃーい、Perlの「コーディング」で困ってる人のスレです。
>
> 1:自分はこう言う事がしたい。
> 2:それでこんな風にやってみたが・・・
> 3:それだとこんなエラーが出て上手く行かなかった。
>
> 1と3が無いと誰も答えられないよ、良い回答は良い質問から。
> 一緒に勉強しましょう。
1と2はあるが、3がないな・・・。
Winでやってるなら、
print "Content-type: text/html\r\n\r\n";
にしてみ。
0873nobodyさん
02/05/24 14:12ID:kdQeUGzgcookie自体に名前付けるとか。
2時間弱ネットさまよってますけど、見つかんないんです…。
0874nobodyさん
02/05/24 14:20ID:???もうちょっとわかりやすく。
多分できる。
0875nobodyさん
02/05/24 14:36ID:lhjaJYwp0876nobodyさん
02/05/24 14:38ID:kdQeUGzg日付が今日と同じなら同じものを表示したいんですが、
その日付と時間秒数が、名前やメールを変えると、
一緒に同じ日付でも更新されてしまいます。
0877nobodyさん
02/05/24 14:41ID:???ttp://pc.2ch.net/test/read.cgi/php/984840107/
スレ一覧の検索ぐらいする!
>876
日本語で説明してくれ。
0878nobodyさん
02/05/24 14:42ID:kdQeUGzgもうちょっと自分でがんばってみます(鬱
0879nobodyさん
02/05/24 16:07ID:ftO6wAMU拡張子は.shtmlで
<!-- #include virtual="./aaa.cgi" -->
と記述しています。
cgiを直接起動させると正しく出力しています。
パーミッションもいろいろと試してみました。
どのような対処が考えられますでしょうか?
ちなみにサーバはGMOのサーバで試してます。
ローカルではうまく動いているのですが・・・。
0880nobodyさん
02/05/24 16:33ID:???>>1
> いらっしゃーい、Perlの「コーディング」で困ってる人のスレです。
>
> 1:自分はこう言う事がしたい。
> 2:それでこんな風にやってみたが・・・
> 3:それだとこんなエラーが出て上手く行かなかった。
遠くの本屋で本を買え。
virtualで読み込むSSIが直接起動で正しく出力?
Content-type: text/htmlヘッダしか吐かないはずなのに
正しく表示されるほうがおかしくないかい?
0882nobodyさん
02/05/24 17:22ID:ftO6wAMUshtmlファイル上にCGIで出力されたテキストをのせたいので、
<table>
〜
</table>
までを出力させてます。
ブラウザでCGIを直接起動すると
タグには<table>〜</table>までちゃんと出力されてました。
shtmlから起動すると
<!-- #include virtual="./aaa.cgi" --> これがそのまま書かれているだけです。
なにか根本的に間違ってたりするのでしょうか・・・。
0883nobodyさん
02/05/24 17:43ID:???クレジットカード番号がメールに書かれていたら問題だけど、
商品名や自分の名前くらいなら別にいいんじゃない?
それすらイヤならそもそもメール使えないし。
ローカルでうまく動いてるって、ローカルサーバではなくその事?
目的のサーバでSSIのvirtualが使えるのならCGIに問題あるとしか
考えられないけど。
いずれにしてもソースを見なければ。
0887nobodyさん
02/05/24 18:42ID:???環境変数を色々使えばできるとは思うが、情報不足で答えられん。
環境変数も鯖によっては取得できなかったりもするし。
0888nobodyさん
02/05/24 18:45ID:???全自動でやることを考えるよりも、
$local_path = '..';
$full_path = 'http://〜〜/cgi-bin';
$path =~ s/$local_path/$full_path/;
と手入力でやった方が簡単だぞ。
スクリプトを配布するなら別だが、それだと環境変数でのやり方は鯖によって
可不可が変わるから難しいと言っておく。
0889885
02/05/24 18:57ID:???えっと、Socket使って他サーバーにあるHTML読み込んでそこにあるタグから
アドレスを抜き取ってファイルをダウンロードしてみようとか考えて、
http://〜の形式のアドレスではできたのですが、相対パスはいろいろ考えてみたのですが
よくわからないので相談してみたんです。
0890nobodyさん
02/05/24 19:06ID:???ソケットを使うって事はその基点となるURLはわかってるわけだろ?
だとしたら、そこから「../があったらURLを削る」、「./だったら同じフォルダ」で
URL変換を入れればいいだけじゃないのか?
0891nobodyさん
02/05/24 22:19ID:???・HTML読む
・<base>, <meta http-equiv="base">があったらそれ、無い場合はリクエストからベースURLをつくる。
・相対パスだったら連結する。.や..はhttpサーバがよきにはからってくれる。
0892nobodyさん
02/05/24 22:32ID:ftO6wAMUローカルサーバではうまくいってます。
借りてる鯖の説明にはSSIは使えるとかいてありますが、
普通のhtmlファイルやテキストファイルをインクルードしても全く反応しません。
本当にSSI使えるのかな・・・・。
0893nobodyさん
02/05/24 23:01ID:???<!-- #include virtual="./aaa.cgi" --> を
<!--#include virtual="./aaa.cgi"--> にしたら動いたりしてな
0896nobodyさん
02/05/25 03:06ID:???もし配列のデリファレンスが判らないのならば、
@{$array[0][0]}のように、@{}の中にリファレンスを書けばいいだろう。
File::Pathのrmtreeがわからないなら実際にドキュメント読んでまず試せ。
0897nobodyさん
02/05/25 03:32ID:???ネエYOとWarningが出た。CPANへ探しに行ったが見あたらん。
何ですのコレ。make test に問題が出るだけで、そのまま使え
そうな気もしますが。
0898nobodyさん
02/05/25 03:41ID:???http://search.cpan.org/doc/MSCHWERN/Test-Simple-0.44/lib/Test/More.pm
0899nobodyさん
02/05/25 03:59ID:???んやね。一生懸命、目で探してますた。ありが�d
0900nobodyさん
02/05/25 05:07ID:???0901nobodyさん
02/05/25 07:46ID:/kHlEeLMサブルーチン内からmain内でmy宣言した変数を
参照するにはどうすれば良いのでしょう。
引数で参照渡しするしかない・・・?
それとも、これってmy宣言の意味わかってない・・・?
0902nobodyさん
02/05/25 09:39ID:???>引数で参照渡しするしかない・・・?
>それとも、これってmy宣言の意味わかってない・・・?
その通り。my 宣言されたもんはlocal変数だと思ってください
0903nobodyさん
02/05/25 09:45ID:XVu0yEmF実行結果を表示させようとしています。
str1 = URL_CGI + "?" + form.namae.toString()+ ...略;
window.open(str1, ...略);
普通にフォームのactionでこのCGIを呼び出すと、
新しいウィンドウのロケーションバーには引数無しのアドレスが
表示されますが、
http://www.abc.jp/abc.cgi
上の方法で呼び出すと引数付きのダラダラと長いアドレスが
入ってしまいます。
http://www.abc.jp/abc.cgi?data:namae=山田太郎&toshi=...略
この無駄に表示される引数の部分を無くしたいのですが、
どうすれば良いでしょうか?
「JAVAscriptで新しいウィンドウを開き..」の部分は変更不可です。
どうか皆さんの知恵をお貸し下さい。
0904nobodyさん
02/05/25 09:54ID:???無理。
0906903
02/05/25 10:33ID:XVu0yEmFPerlCGI側の操作でもなんとかならないかなと思ったんです。
一旦新しいウィンドウを開いておいてから
移動とかどうとか・・・駄目ですか?
では、アプローチを変えます。
903の挙動が何故問題になるかというと、
cookieが複数になってしまうからなんです。
これを統一しようと思ったらどうすればよいのでしょう? なにとぞ・・・
0907nobodyさん
02/05/25 10:51ID:???perl以前の問題。
CGIで〜〜な事がしたい。perlではどうするのでしょう? なら話はわかるが。
〜〜のところをはっきりさせてから出直しな。
0908nobodyさん
02/05/25 13:31ID:???とかで取り出す変数をそのループの外で使う場合
はどうすれば良いですか?
0909nobodyさん
02/05/25 16:20ID:???0910nobodyさん
02/05/25 17:24ID:???foreach (@data){
if(/<a href="(.*?\.($ext))">/i){
print $1;
--処理--
}
if(/<img src="(.*?\.($ext))">/i){
print$1;
--処理--
}
}
※@dataはHTMLのソースが入っている。$extは拡張子
とやっていて拡張子をgif、jpgなどですると
<a href="hoge/hoge.html"><img src="hoge.jpg"></a>と言う形式の時に
出力が hoge/hoge.html"><img src="hoge.jpg と出力されてしまいます。
拡張子が(この場合は)htmlで試すと大丈夫なので自分でも解決方法を考えても
わからなかったのでここで質問させてもらいに来ました。
0911アルバムモナ
02/05/25 17:31ID:yOCzjbychttp://isweb37.infoseek.co.jp/computer/man_king/
モナー写真いっぱいほしぃモナー
ところでどなたかインフォシーク鯖の詳しい環境を知っておられる方いませんでしょうか?
JSPが使えるかどうかとかしりたいです。
use LWP::Simple;
$page = http://www.abc.jp/abc.cgi?data:namae=山田太郎&toshi=...略";
$doc = get $URL;
print $doc;
とかいうのはダメなのかな?
0916お願いします
02/05/26 02:39ID:WlbJvt440917nobodyさん
02/05/26 02:45ID:cGfFiopg$hoge =~ s/[\r\n]|\r|\n//g;
う〜ん、美しくない。
0919教えて君
02/05/26 03:10ID:???表示されません。ちなみにniftyです。niftyは少し特殊だと
聞いたのですが、どこのスレで聞けばいいでしょうか?
とりあえず上の方に初心者というのがあるこのスレで
聞いてみました。よろしくお願いします。
初心者ですんません。
0920nobodyさん
02/05/26 03:28ID:???>いらっしゃーい、Perlの「コーディング」で困ってる人のスレです。
ここで聞いてください。
【初級】CGI総合スレッド@Web制作板
http://pc.2ch.net/test/read.cgi/hp/1016938825/l50
0921916
02/05/26 03:28ID:WlbJvt44出来た!ありがとー!
0922nobodyさん
02/05/26 16:46ID:CiF8CZ1Z前はそんなことなかったんですけど、どうしたら普通に開けますか?
0923(゚д゚)ウマー&rlo; (゚д゚)ーズマ
02/05/26 17:10ID:???0924スレッドストッパー&rlo;止停
02/05/26 17:12ID:???0925仕様書無しさん
02/05/26 20:00ID:???0926仕様書無しさん
02/05/26 20:02ID:???923と924はいったいなんなんだ〜?
2chがハクされてるの?
0927lo;
02/05/26 20:22ID:???ちょっとしたことをするだけでできるよ
0928nobodyさん
02/05/26 20:36ID:???0929(゚д゚)ウマー&rlo;(゚д゚)ーズマ
02/05/27 00:05ID:???0930&rlo;ぞいなてきで&rle
02/05/27 00:07ID:???0931&rlo;・・・たっまし&rle;
02/05/27 00:08ID:???0932仕様書lo;無しさん
02/05/27 00:54ID:???0933lo;・・・たっましle;
02/05/27 00:55ID:???知らなかった
0934nobodyさん
02/05/27 08:16ID:???0935nobodyさん
02/05/27 16:05ID:???今日気がついた。
0936nobodyさん
02/05/27 16:27ID:???という煽りレスの一つでもつけようとしたが、もしかしたら俺が知らないだけかもしれない、
と思って、ひとまず検索することにした。
するとどうだ、javeは存在するではないか。
http://www.jave.de/
あぶないあぶない。無知を晒す所だった。
俺もこのソフトでいっちょiアプリでも作ってみるか。
0937nobodyさん
02/05/27 20:23ID:HK5rJclO(自分のdocomoも弾かれてしまう)どこが間違ってるんでしょうか?
if ($ENV{'HTTP_USER_AGENT'} ne~ /DoCoMo/) {
print "Location: http://www.yahoo.co.jp/\n\n";
}else{
0938nobodyさん
02/05/27 20:38ID:???0939nobodyさん
02/05/27 20:58ID:3m1HaKVa使用法として、プログラム側で
$template->param(
HOME => $ENV{HOME},
PATH => $ENV{PATH},
);
みたく変数を用意して、HTMLまじりのテンプレート側で
My Home Directory is <TMPL_VAR NAME=HOME><br>
My Path is set to <TMPL_VAR NAME=PATH><br>
なんて使うんだけど、プログラム側で事前に用意した変数を
テンプレート側で使用しないと、何も出力されなくなるんです。
これを防ぐ方法か、もしくは適当な回避策って無いんでしょうか?
実際に使用してる方の意見が聞いてみたいです。
ちなみに現在は、不要な変数名が「BOOL」だとしたらテンプレート側で
<TMPL_IF BOOL><TMPL_ELSE></TMPL_IF>
なんてお茶を濁しています
0940nobodyさん
02/05/27 21:46ID:???何がしたいのか分からん。
宣言をしていない変数を参照すれば空白であってしかるべきだと思うのだが。
お茶の濁し方も意味不明。それじゃどうやっても空文字列にしかならんだろ。
0941nobodyさん
02/05/27 22:17ID:???(標準、エラー出力を文字列かしたいって事っす)
「うまい」方法教えてください。
「よろしく、おながいします」
0942nobodyさん
02/05/27 22:34ID:???悪い。ネタの相手してる暇はねぇんだわ。
0943942
02/05/27 22:49ID:vs9qORcp教える気ねぇ〜なら、すっこんでおつぅ〜の、わかったか?
0945nobodyさん
02/05/27 22:56ID:???悪質な質問->DQN逝ってよし!->スキルねぇやつはすっこんでろ!
この三連コンボはジエンですか?
0947nobodyさん
02/05/27 23:40ID:???> 何も出力されなくなるんです。
STDERR にエラー吐き出されるんで、httpdのエラーログ見なよ。
本題は、ドキュメントを良く読んで、new で die_on_bad_params => 0 しる。
で、エラー無視するハズだがなあ。俺はやったこと無いけど、
デバッグする時なんかは、簡単にコメントにしてるな。
$template->param(
HOME => $ENV{HOME},
PATH => $ENV{PATH},
#BOOL => $fuga
);
0948942
02/05/28 00:12ID:???ひきつづき、「よろしくおながいします。」
0949937
02/05/28 01:10ID:yZ0xvPBxどうしてもdocomoが弾かれてしまう。どこが間違ってるんでしょうか?
if ($ENV{'HTTP_USER_AGENT'} ne ~ /DoCoMo/) {
print "Location: http://www.yahoo.co.jp/\n\n";
}else{
0950nobodyさん
02/05/28 01:12ID:???正規表現でかわいい顔が出た時〜
0952nobodyさん
02/05/28 01:32ID:???まずは正規表現の書き方から覚えよう。
if ($ENV{'HTTP_USER_AGENT'} ne ~ /DoCoMo/) {
だと
if ($ENV{'HTTP_USER_AGENT'} ne ($_ =~ /DoCoMo/) ) {
になるんじゃないかな?
まず一致する事はないね。
0953nobodyさん
02/05/28 01:48ID:???正規表現の書き方はおかしくねえだろ。おかしいのは、パターン
結合演算子の書き方。つか、キミ自身が正規表現とは何たるかを
勉強した方が良いとちゃう?
0954nobodyさん
02/05/28 01:56ID:???確かに色々間違ってた模様。
ありがとう。
ttp://a414s1.it.nanzan-u.ac.jp/textbook/text082100-2/node81.html
こんなの見つけて色々勉強になった。
漏れには結構基本的な部分が抜けてた模様。
レス数が950を超えています。1000を超えると書き込みができなくなります。