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

【Perl 】初心者コーナーPart7

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい01/09/12 13:04ID:???
いらっしゃーい、perlのコーディングで困ってる人のスレです。

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

1と3が無いと誰も答えられないよ、良い回答は良い質問から。
一緒に勉強しましょう。

参考書籍はこちら【【Perl,CGI】参考書籍 第2版 】
http://corn.2ch.net/test/read.cgi?bbs=php&key=988809842&ls=50
CGIの質問はこちら【CGIだけど、なんか質問ある?part3】
http://corn.2ch.net/test/read.cgi?bbs=php&key=988727833&ls=50

過去ログ、その他の役立ち情報は>>2-5を見よう。
0403名無しさん@お腹いっぱい。01/09/28 13:13ID:Aoj3kwsY
>402
keysでいいんじゃない
0404名無しさん@お腹いっぱい。01/09/28 13:18ID:LKBMQiGk
>JAPU
open(FH, "a") || open(FH, "b")||die "File 'data' Open Error.";
aがダメならbをFHとしてopenとかでも良くない?
0405JAPU01/09/28 13:22ID:???
open(FH, ">a") || open(FH, ">b") || die "File 'data' Open Error.";
ってことですか?
ロックされていても open 自体は成功しますが...
flock はあくまでも advisory lock なんで。
040640401/09/28 13:34ID:LKBMQiGk
ロックされててもopenできるの?
ではロックされてても追加で書き込みとかできるってことですか?
すいません。初心者なもので・・・
0407むぎ茶     01/09/28 14:10ID:???
:ではロックされてても追加で書き込みとかできるってことですか
頭大丈夫か?(n


┐(´ー`)┌


┏━━━━━━━━━┓
┃('Д')y ─┛~~ ┃
┃むぎ茶      ┃
┃[email protected]  ┃
┗━━━━━━━━━┛
0408名無しさん@お腹いっぱい。01/09/28 14:13ID:PZbmJOfw
openはできるけど書き込みはできないんじゃない?
0409名無しさん@お腹いっぱい。01/09/28 14:27ID:???
>>403
kyesだと真偽しか返ってきません。
一回keysで展開してカウントする以外にありますか??
0410名無しさん@お腹いっぱい。01/09/28 14:31ID:???
>>408
openできる。
読み書きもできる。

ロックはできない。

だと思ふ。
0411名無しさん@お腹いっぱい。01/09/28 14:42ID:???
>>409
それしかないと思うけどー。
よく見る例。 $n = scalar(keys(%hash));
0412名無しさん@お腹いっぱい。01/09/28 15:00ID:PZbmJOfw
>410
flock中のファイルはopenも出来て書き込みも出来るの?
それじゃロックの意味がないんじゃない?
カウンターとかでflockよくみるけどあれはファイルを同時アクセス
とかでなるべく壊さないようにロックするんでしょ?
じゃなきゃロックに意味がないよ〜
0413名無しさん@お腹いっぱい。01/09/28 15:05ID:???
>>412
もう少し考えてから発言する事を要求する。
0414JAPU01/09/28 16:32ID:???
あー 言い方が悪かったかな。

flock ってのは「このファイルは俺が使うから誰も触るなよ」
って宣言するだけです。礼儀正しい人は「もう触ってもいいよ」って言われるまでは触りません。礼儀正しくない人は構わず触っちゃいます。ただそれだけです。つまり、単なる紳士協定。OK?
# これ以上簡単な説明は出来ないよ。

----
あと、共有ロック (LOCK_SH) に関して蛇足。
これは「共有ロックの人だけは何人同時に触っても良いよ」ってロックです。読み取りのみが必要な場面で使います。
排他ロック (LOCK_EX) する場合は共有だろうが排他だろうが1人でもロックしていればロックできません。
0415名無しさん@お腹いっぱい。01/09/28 16:53ID:3TgAXZr.
flock(FH,2)
flock(FH,8)
0416名無しさん@お腹いっぱい。01/09/28 16:54ID:IDlsq36I
さすがPerl初心者コーナー>JAPU
0417名無しさん@お腹いっぱい。01/09/28 17:44ID:???
何がしたい?(w>415
0418名無しさん@お腹いっぱい。01/09/28 20:05ID:OpN/lBYw
どれくらいの事ができたら「脱初心者」といえるのでしょうか?
0419丸出し01/09/28 22:09ID:DkMaxtU.
初心者丸出しですが
変数$tmpにどんどん追記していくには
どんな関数を使えばよいのですか?
丸出しで申し訳ないですが。
0420名無しさん@お腹いっぱい。01/09/28 22:11ID:???
>>419
$tmp = 'hoge';
$tmp .= 'fuga';
print $tmp; # hogefuga
0421>41901/09/28 22:18ID:???
いくらなんでも、名前と全4行の本文を合わせて合計3度も「丸出し」を唱えるのは
ちょっと守りを固めすぎですよ(w
0422丸出し01/09/28 22:18ID:DkMaxtU.
なるほど!
スクリプトいろいろ見てて
"."ってなんだろ?って思ってたんですが
そういう事だったんですか!
即レス感謝!ありがとう〜!
0423丸出し01/09/28 22:20ID:DkMaxtU.
>421
自慢じゃないですが
ディフェンス力の強さだけは
結構高いんですよねw
どうもでした〜。
042439501/09/28 22:56ID:???
>>401
うーん。
今の私には何が何やら・・・。

でも理解できるように頑張ります。

ありがとうございました。
0425名無しさん@お腹いっぱい。01/09/29 09:48ID:???
どれくらいの事ができたら「脱初心者」といえるのでしょうか?
どれくらいの事ができたら「脱初心者」といえるのでしょうか?
どれくらいの事ができたら「脱初心者」といえるのでしょうか?
どれくらいの事ができたら「脱初心者」といえるのでしょうか?
0426名無しさん@お腹いっぱい。01/09/29 10:11ID:???
sleepって1秒単位しかだめなの?

たとえば1/10秒とか1/100秒って指定できないのかな?
sleep(1/10);
とかってやってみたけど無視されてるようなきがするんだけど
0427_gunzip01/09/29 10:15ID:???
>>426
sleep()は秒単位です。
ミリ秒単位でsleepしたい場合はselect()システムコールを用いるか、
Time::Hiresモジュール(Perl5.7.1からは標準)を利用してください。

select(undef, undef, undef, 0.1);

or

#!/usr/bin/perl
use Time::Hires qw[ sleep ];
sleep(0.1);
0428名無しさん@お腹いっぱい。01/09/30 00:52ID:sHi5SnW.
今更ですが、このスレッドには御世話になってます。
識者の皆さん、ありがとうございます。
私も皆さんに追いつけるよう、努力していきたいと思います。
0429名無しさん@お腹いっぱい。01/09/30 00:52ID:???
教えてください。
HTMLファイルに書き出す時、
.=  で、追記したものを、
HTMLファイルに書き出してるんだけど、
これ以外にいい方法ってありますか?
0430名無しさん@お腹いっぱい。 01/09/30 03:44ID:???
意味が解らないDEATH
print文を健作してくだサイ
0431名無しさん@お腹いっぱい。01/09/30 09:16ID:dIMlyAZM
どれくらいの事ができたら「脱初心者」といえるのでしょうか?
どれくらいの事ができたら「脱初心者」といえるのでしょうか?
どれくらいの事ができたら「脱初心者」といえるのでしょうか?
どれくらいの事ができたら「脱初心者」といえるのでしょうか?
0432名無しさん@お腹いっぱい。01/09/30 11:12ID:???
どっから迷い込んで来たのか・・・・迷惑な話だ
>>429
同じく意味が分からんけど、ファイルに書き出すって事?

print "hogehoge";#は知ってるはず
print<<"_HTML_";
hogehoge
_HTML_ #でもいいし

print HTML <<"_HTML_";
hogehoge
_HTML_

とか結構適当に書けば色々出来るよ  :-)
0433太田@モナー板固定01/09/30 11:59ID:???
質問お願いします。
A2GIFという手法で、OS依存しないAA表示を実現させようと考えています。
Windows用ツールは自作、マック用ツールはとある方に作っていただいたんですが、
できればブラウザ上で表示させたいな、などと思っています。

私はPerlとかあんまり知らないのですが(ソースとかは少しなら分かるのですが)、
とある方に作っていただいたソースがあります。しかしPerlの設置・運用に関する
知識がまるで無いので、どう活用すればいいのか分かりません(泣)
みなさんの力を貸して頂きたいのです・・・どうかよろしくお願いします。

(A2GIF)文字のコードを読んでをgifに置き換え、画像として表示させることで、
ブラウザ依存/OS言語依存無しで2ちゃんねるAAの表示が可能です。転送量が膨大に
なってしまうのが欠点ですが・・・例えば( ´∀`)を変換すると下のようになります。
<html><body>
<img src=font/18line.gif><img src=font/sjis8169.gif><img src=font/sjis8140.gif><img src=font/sjis814C.gif>
<img src=font/sjis81CD.gif><img src=font/sjis814D.gif><img src=font/sjis816A.gif><br>
</body></html>

アップ.HP http://www42.tok2.com/home/hekomuyo/
通常版   http://www.geocities.co.jp/SiliconValley-Cupertino/9474/aameasure.lzh (約200KB)
A2GIF版 http://www.geocities.co.jp/SiliconValley-Cupertino/9474/aameasure_a2.lzh (約600KB)
ソース   http://www.geocities.co.jp/SiliconValley-Cupertino/9474/aameasure_src.lzh (10KB未満)
M.A.C.用 http://www07.u-page.so-net.ne.jp/rg7/yu-ya/warez.html
Perl版.?  http://green.jbbs.net/computer/bbs/read.cgi?BBS=391&KEY=1001606806&END=100
注)「Win版のソースが汚い」というクレームは受け付けていません(苦笑)
0434名無しさん@お腹いっぱい。01/09/30 13:14ID:???
>>430 >>432 ありがとうございます。

意味不明申し訳ないです。cgiファイルではなくてHTMLファイル化ということです。
出力結果部分を.htmlファイルにする方法で.=を使ってますが変なので、
良い方法をご教授願いたいと思っています。宜しくお願いします。

$logfile = "kakidashi.html";
$syuthuryoku = "オマエモナー\n";

#以下の部分を一まとめにして、$htmlに代入する方法とかあるのかな?
$html .= "<html>\n";
$html .= "<head><title>この方法は変でしょ</title>\n";
$html .= "<body>\n";
$html .= "HTMLの出力結果は、$syuthuryoku\n";
$html .= "</body>\n";
$html .= "</html>\n";

open (OUT,">$logfile") || &error('オープンエラー');
print OUT ($html);
close (OUT);

&header();
print "<a href=./kakidashi.html>出力ファイル</a>";

sub error {
&header();
print "<body>$_[0]</body></html>\n";
}
sub header {
print "Content-type: text/html\n\n";
print "<html><head><title>この方法は変でしょ?</title></head>\n";
}
0435名無しさん@お腹いっぱい。01/09/30 13:19ID:Bs/Yjz32
あ、太田さん来てる。
UAに依存しないAAですか。いいっすね。
043643501/09/30 13:23ID:???
一つ一つの文字をgifにですか。
なんか効率悪そうですね。gifcat(dog)とかで繋げられないかな?
0437名無しさん@お腹いっぱい。01/09/30 13:24ID:LmdMp5e6
>>433
よくわからんが、web上でCGIとして動かしたいって事?
だとしたら、gatewayのサーバー立てて、そこにCGIを設置して、
httpリクエストでAAを取得→A2GIFに渡す→結果を返す
んでいいじゃない?
0438太田@モナー板固定01/09/30 13:25ID:???
えーと、そっち方面の知識がまるで無いので・・・
カウンターを繋げたりする方法でしょうか。
1行1画像くらいにできれば効率上がりそうですね。
0439太田@モナー板固定01/09/30 13:29ID:???
>>437
えーと・・・どうやるのでしょう?(汗)
自分のPCではちょっと鯖立ては難しいので、
トクトクでやりたいのですが、どうでしょうか・・・。
0440名無しさん@お腹いっぱい。01/09/30 13:29ID:LmdMp5e6
>>434
open (OUT,">$logfile") || &error('オープンエラー');
print OUT qq{
<html>
<head><title>この方法は変でしょ</title>
...
};
close (OUT);
0441名無しさん@お腹いっぱい。01/09/30 13:34ID:LmdMp5e6
perl動いてセッション間の通信ができれば鯖はなんでもいい。
トクトクは知らんが。
それ以前に、ユーザーインターフェイスの仕様をもうちょっと煮詰めた
方がいいと思われ。
動作イメージがさっぱりわからん。
0442太田@モナー板固定01/09/30 13:38ID:???
>>441今のところ考えているのは、
案1:画面上に入力フォームがあって、そこにAAをコピペ、変換ボタンを押すとA2GIF形式のhtmlが表示される
案2:URLを入力するところがあって、変換ボタンを押すとURL先の内容がA2GIF形式に変換される

案1はちょうど掲示板の入力のような感じで、
案2は確か「幼児語化計画」のようなものです。
0443名無しさん@お腹いっぱい。01/09/30 13:57ID:SdkZLPb6
open(COUNT, "+<$countdata") || die "File 'countdata' Open Error.";
flock(COUNT,2);
$counter = <COUNT>;
$counter1 = ++$counter;
seek(COUNT, 0, 0);
print COUNT "$counter1\n";
close(COUNT);
flock(COUNT,8);
print "Content-type: text/html\n\n";
print <<EOF;
<HTML>
<BODY>
<CENTER>
<FONT size="5"><B>
$counter1
</B></FONT>
</CENTER>
</BODY>
</HTML>
EOF

というのでテキストカウンターを作ったのですが表示したいHTMLに
<img src="hehehe.cgi">という風にしても表示されません。
テキストのみのカウンターの場合はどのように表示させてば
いいのでしょうか?
もちろん単体でしたらうまく機能しています。
0444名無しさん@お腹いっぱい。01/09/30 13:59ID:???
>>434
$html = <<"__KOKOMADE__";
<html>
<head><title>それならヒアドキュメントでいいっす</title>
<body>
HTMLの出力結果は、$syuthuryoku
</body>
</html>
__KOKOMADE__
0445コピペ職人01/09/30 14:35ID:???
open (HOGE,">hoge.html");
select HOGE;
print "<html><head></head>";
print <<"_HTM_";
<body>
これselect忘れると変になるんだよなー
</body></html>
_HTM_
0446名無しさん@お腹いっぱい。01/09/30 14:41ID:E6kRmxB6
>>442
案2のほうは437や441が言ってるやつね。CGIプロクシ形式。
無料レンタルサーバだとできないように設定されてることが
多いけど、トクトクはどうなんかねー。

とりあえず、案1はどのサーバでも大丈夫だからやってみれば。
いま使ってる掲示板スクリプトはどんなやつ?
ちょっと改造するだけでオーケーと思うよ。
0447名無しさん@お腹いっぱい。01/09/30 14:58ID:???
>>443
image/* を吐かなければいけないCGIに text/html を吐かせて、
君は一体何をしようとしているのだ。
それじゃ表示されなくて当然よ。
あとねー、なんつーか、closeした後にflockとかわけわからん。
HTMLも不思議マークアップだし。
0448名無しさん@お腹いっぱい。01/09/30 15:15ID:???
>>447
テキストカウンターらしいよ。

>>443
IMGタグでtext/htmlを出力しようとしてもね…。
0449443じゃないけど01/09/30 15:43ID:WrCS3j3.
ヒアドキュメントって他にどんなのがあんの?
0450名無しさん@お腹いっぱい。01/09/30 15:48ID:???
>>449
それはどういう意味ですか?
0451名無しさん@お腹いっぱい。01/09/30 15:52ID:mtebbK2k
>>443
みんな不親切すぎ。俺が答えるYO!

(1) SSIが使えるサーバなら
<!--#include file="hehehe.cgi"-->
(2) SSIが使えないサーバなら
<iframe src="hehehe.cgi" width=200 height=50>ブラウザ古い!カウンタ表示不能!</iframe>
0452名無しさん@お腹いっぱい。01/09/30 16:00ID:???
>>449
最初よくまちがえるんだけど、
「print<< というヒアドキュメント命令」があったり、
「=<< というヒアドキュメント代入記号」があるわけじゃないですぜ。

<<"HOGE" から HOGEまでが「ヒアドキュメント形式の文字列」で、
それをprintしたり代入してるわけ。
0453名無しさん@お腹いっぱい。01/09/30 16:01ID:???
>>451
親切そうに見せといて、不親切この上ない素晴らしい回答。
0454名無しさん@お腹いっぱい。01/09/30 22:52ID:5nFULihc
DBからデータ取得後にcsv形式でデータをダウソロード
させたいのですがダウソロードのダイアログにサーバ名と
ファイル名が表示されません。ちなみにファイルのダウソ
ロードは問題なくできます。
$filename="hoge.csv";
$|=1;
print "Content-type: application/x-csv\n";
print 'Content-Disposition: attachment; filename='.$filename."\n\n";
#csvファイルをダウンロードさせる
open(FH, $filename) || die;
binmode(FH);
#ファイルに適したMIMEタイプを出力
while(read(FH, $buffer, 512)){
print $buffer;
}
close(FH);
exit;
0455太田@モナー板固定01/10/01 03:32ID:???
2chスレッドのポスト関係の部分を取り出して、できるだけアレンジしてみました。
いかがなものでしょう?
<form method=POST action="a2gif.cgi"><input type=submit value="A2GIFで表示" name=submit>
<br><textarea rows=5 cols=70 wrap=off name=MESSAGE></textarea></form>

>>446
回答ありがとうございます。
表面的にはなんとなく分かるんですが内部でどんな動作になっているのか
全く知らないので・・・(1)ポスト用のhtmlで上のコードを入れておく、
(2)ポスト先のcgiファイルでA2GIFに変換して表示 って感じになるんでしょうか。
質問ばかりでは始まらないので、とりあえず掲示板スクリプトを見て勉強したいと思います・・・。

モナー板のこっちのスレでもA2GIFの話をしています。
http://piza2.2ch.net/test/read.cgi/mona/989849855/l50
0456win3201/10/01 12:31ID:???
Win32のPerl使うときっていちいちディレクトリを切るときに'/'を'\'
に変更しないといけないんですか?
友達に聞かれたんですけど、今Linuxな環境しかないんで。。。

識者の方、教えてくださいませ
0457名無しさん@お腹いっぱい。01/10/01 12:33ID:???
んなこたあ無い。
0458名無しさん@お腹いっぱい。01/10/01 13:37ID:kD.LVvDk
>456
そんなことないよ。
それはただ単に変換がLinuxとWin32で違うだけでWin32で¥を押すと
¥がでるけどLinuxとかで¥と押すと逆スラッシュに変換されるだけで
一緒ですよ
0459名無しさん@お腹いっぱい。01/10/01 14:13ID:???
バックスラッシュは関係無いと思うぞ。>>458
>>457 大丈夫、俺は識者じゃ無いけどPerlforWINやACTIVEPerlは
ディレクトリの区切り子を変換してくれる。Cygwinだと先にCygwinが
面倒見てくれるから問題無し。WIN <=> UNIX互換 の場合まず気に
しなくて良いと思う。

因みにMACの : は駄目、死にます 
0460名無しさん@お腹いっぱい。01/10/01 14:36ID:???
>>459
>>>457 大丈夫、俺は識者じゃ無いけどPerlforWINやACTIVEPerlは

いや俺に言うたかて、とマジレス入れてみる。
0461名無しさん@お腹いっぱい。01/10/01 15:29ID:???
あ、わり>>460
MACって2つ上は ::: なんだよなぁ・・・
0462名無しさん@お腹いっぱい。01/10/01 16:09ID:rWEZiHhg
macは糞
046343401/10/01 16:15ID:???
>>440 >>444 >>445
ありがとうございました。
考える幅が広がりましたのでHTML化にしてみたいと思います。
0464暇人01/10/01 16:27ID:???
ID : rWEZiHhg の糞レス一覧。

===== 初心者質問スレ =====
462 名前:名無しさん@お腹いっぱい。 :01/10/01 16:09 ID:rWEZiHhg
macは糞

===== aspがうとしいですが =====
4 名前:名無しさん@お腹いっぱい。 :01/10/01 12:18 ID:rWEZiHhg
>>3
とても傷つきました。
慰謝料請求しますので。

===== JAPUをドキュソと罵る =====
106 名前:名無しさん@お腹いっぱい。 :01/10/01 12:23 ID:rWEZiHhg
DQNプログラマーの素質アリですね。

どうやら2番目のasp教えてスレにレスが無い事にご立腹の様子 ワラ
みんなレスしてあげてね♪
0465名無しさん@お腹いっぱい。01/10/01 17:03ID:???
コマンドラインで利用してる時にスクリプトを実行した時の
基準パスは、
1:実行者のカレント
2:スクリプトの置かれたディレクトリ
のどちらになるかは決まっていますか?
それと、これはある程度OSに依存するものなんでしょうか。
/usr/hoge/に
foo.pl、foo.txt foo2.txt
/usr/hoge/huga/
bar.txt bar2.txt
この状態で/usr/hoge/huga/からfoo.plを実行した時に
カレントディレクトリは/usr/hoge/huga/ と思って間違いないですか?
0466名無しさん@お腹いっぱい。01/10/01 17:05ID:???
追加
上の状態でスクリプトから ./ をreaddirすると
bar.txt bar2.txt が読まれると思って良いでしょうか
0467名無しさん@お腹いっぱい。01/10/01 17:34ID:???
テストしてください
0468名無しさん@お腹いっぱい。01/10/01 17:46ID:???
>>467
テストしたから聞いています。
「家の環境じゃそうはならないぞ」と言ったご意見を頂きたいのです。
それとも全ての環境をテストしなければ質問は許されませんか?
0469名無しさん01/10/01 18:03ID:???
>>468
アホはほっとけよ 疲れるだろ p

それはともかく当然俺の環境でも同じようになったよ
Linux と Cygwinだけど
つーか今まで俺のツールはそれを前提に書いてきたから通用しない環境があると困るなー
0470名無しさん@お腹いっぱい。01/10/01 18:13ID:???
心配ならchdirしときましょう。
もしくは絶対パスで指定。
0471名無しさん@お腹いっぱい。01/10/01 18:20ID:???
>基準パスは、
>1:実行者のカレント
>2:スクリプトの置かれたディレクトリ

Win, Unixは全て1です。
0472名無しさん@お腹いっぱい。01/10/01 18:53ID:IQ6dfID2
>443
シンプルなカウンタだな
どやって使うんだ?フレームか?
0473Petit Perl style01/10/01 19:02ID:???
ソースの可読性についてです。
上級者のみなさんはスパゲッチになりがちなperlのソースを書くとき
どんな事を心掛けてますか

漏れが自分ルールにしてるのは、、
変数名は5文字まで、ただし変数名の説明を入れる
ヒアドキュメントはインデントが崩れるからキライ
大域変数は大文字  くらいッス!
0474名無しさん@お腹いっぱい。01/10/01 19:41ID:???
>>473
変数名は意味が通じれば多少長くてもいいと思われ。
一般に言われてる Perlプログラマへの推奨スタイルはこれ。
http://www.kt.rim.or.jp/~kbk/perl5.005/perlstyle.html

俺がやるようにしてるのは上と,関係ある変数はハッシュにする,
作業ごとにラベルつけて{}で括るか関数にするくらいか。
0475名無しさん@お腹いっぱい。01/10/01 21:05ID:1S1Hyahg
>>473
>変数名は5文字まで、ただし変数名の説明を入れる
説明ってコメントで?

というか、説明入れないとわからない変数名は最悪。
0476名無しさん01/10/01 21:12ID:1nBk41eo
>ヒアドキュメントはインデントが崩れるからキライ

インデント崩したくないのに激しく同意なんだけど、
printを並べるのも、なんか見栄えはともかく
繰り返し呼ぶことのオーバーヘッドがちょっときになったり。
473はどうしてんの。
0477名無しさん@お腹いっぱい。01/10/01 22:11ID:???
>>469-471
ありがとうございます。安心しました  ^^
実は自分の書いたファイル管理スクリプトを人に上げたらどうも上手く動いて無い
様なので、そういう可能性を考えたのです。PC初心者さんなんであてにならないけど。。

470さんの言う通りなんですが、例えば ls.pl ./ ってされた時
ls.plでARGVを引っ張ってきたとして、ls.plディレクトリを
基準にされちゃうと非常に困るんです。
他にも方法が有るかもしれませんが、ここは仕様を理解した方が
良いかなと思ったんで。
ありがとうございました。  m(_ _) m
0478名無しさん@お腹いっぱい。01/10/02 04:48ID:ISbv0fVM
逆に>>465の
>2:スクリプトの置かれたディレクトリ
を取得するほうが難しいよ。特にOS依存なくそうとすると。
実はこれ、自分じゃ書けなかったのでFindBin.pmを見たら、
やっぱ結構苦労している。

CGIを実行するときApacheが自動的にchdirしてくれるってのは
かなりありがたいことだと思った。
0479名無しさん@お腹いっぱい。01/10/02 07:10ID:puwr6ecI
とほほさんのwwwsrchを使っているのですが
これってcgiファイルの文字は検索対象に入らないのでしょうか?
掲示板の書き込みとかもトップページから検索できるようにしたいので。

どなたかご存じの方は教えて下さい。
0480名無しさん@お腹いっぱい。 01/10/02 07:35ID:???
>>479
検索対象ファイルに加えてやれば出来ると思うよ。
でもログそのまんまだと読み難いんじゃないかなあ。
読み出しスクリプト通した方が良くない?
0481名無しさん@お腹いっぱい。01/10/02 08:31ID:???
>>480
例えばどうするんでしょうか?
(すみません、無知なもので..)
0482 01/10/02 10:22ID:80rCzk0o
### location
sub location{
print "Location: $url\n";
exit;
}#location END

こんな感じで飛ばすと、表示したブラウザの下に
Location: ero.cgi?zap
と表示されます。表示しないようにする方法はありますか?
宜しくおねがいします
0483名無しさん@お腹いっぱい。01/10/02 10:27ID:???
下ってどこよ?
048448201/10/02 10:32ID:80rCzk0o
>>483
ブラウザの一番下(ページ内)です
urlが出たりする所じゃないです
048548201/10/02 10:37ID:80rCzk0o
>>483
あっと、解決しました
すまんですたぃ
0486名無しさん@お腹いっぱい。01/10/02 10:41ID:???
そりゃただのスクリプトのバグ。
必要ないのにlocationサブルーチンを呼び出してる。
どこだか分からなかったら、適当なところにアプすれば見るよ。
0487名無しさん@お腹いっぱい。01/10/02 10:41ID:???
あ、かぶった。鬱。
0488101/10/02 15:21ID:LK1d/L0I
その画像ならココ
http://www.h2.dion.ne.jp/~goldman/
0489バイトコードの取得方法について01/10/02 15:36ID:ZBXcT.qc
バイナリファイルを「変数」に読み込んで
一バイトずつループ処理をする方法はありますか?

「ファイルハンドル」を用いて指定位置のキャラクタコードを
取得する方法はありますか?
(getcだと位置を指定できません)

正に初心者のなのでよろしくお願いします。
0490名無しさん@お腹いっぱい。01/10/02 15:47ID:???
CGIで、渡されたフォームデータをデコードする際に、
$value =~ tr/+/ /;
で躓いています。
実データの「+」をそのまま「+」で表示し、
半角スペースのみを変換するにはどうしたらいいのでしょう?
049149001/10/02 15:59ID:???
すみません。解決しました。
デコードの順番が逆でした。
逝ってきます。

$value =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C",hex($1))/eg;
$value =~ tr/+/ /;
↓
$value =~ tr/+/ /;
$value =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C",hex($1))/eg;
0492JAPU01/10/02 17:36ID:???
>>489
seek と getc の組合わせで解決?

seek FH, 100, 0;
$c = getc FH;

# seek の使い方は perldoc -f seek を参照。
# または "プログラミングPerl 第2版" or "Programming Perl 3rd Ed." を買う。
0493名無しさん@お腹いっぱい。01/10/02 17:50ID:RaZaDOV6
すみません、>>479をもう一度教えてもらえないでしょうか?
049448901/10/02 18:51ID:???
>492
レス有難うございます。帰宅してから試してみます。
0495名無しさん@お腹いっぱい。01/10/02 20:05ID:???
正規表現でどうしても解らないのですが
http://で始まる文字列を抽出したいのですが

http://www.gc-inside.com/news/20010927am2.html
のようなURLは正常に処理されるのですが
http://choco.2ch.net/test/read.cgi?bbs=tvd&key=998696750
のような=?!&が混入したURLがマッチしません
よそのサイトのを参考にしてしまったので
正規表現部分の内容を余り理解して無くて困ってます

ちなみに下がソースです

#正規表現により配列に展開される
@http = $text =~ /s?https?:\/\/[-_.!~*'()a-zA-Z0-9;\/?:\@&=+\$,%#]+/g;

http://choco.2ch.net/test/read.cgi?bbs=tvd&key=998696750
のようなURLでもマッチするようにしたいのですが
できればアドバイス下さい
よろしくおねがいします。
0496JAPU01/10/02 20:28ID:???
& -> &amp; に変換した後だったとかいうオチ?
0497101/10/02 20:29ID:LK1d/L0I
http://www.nt.sakura.ne.jp/~rose/
0498名無しさん@お腹いっぱい。01/10/02 20:37ID:W6pnxjhI
&
0499名無しさん@お腹いっぱい。01/10/02 20:38ID:W6pnxjhI
&amp;
0500名無しさん@お腹いっぱい。01/10/02 20:52ID:6OIJd9Gg
拡張子を一括変換するのってどうやるんでしたっけ。
(たとえば全ての拡張子を.tmpに変更する)
なんかやりかたがあったような…
0501名無しさん@お腹いっぱい。01/10/02 20:54ID:gYYU4i1s
Linuxのコマンドを実行する
system("command par");
で、ユーザーの追加をperlでやろうと思うんだけど

$username = 'hogehoge';
system("useradd $username");
system("passwd $username");

とすれば確かにユーザ追加されるが、パスワードは何か?と聞かれる(当然だけど)
そこでパスワードをパラメータとして入力するにはどう記述すれば良いんですか?
$userpass = 'xxxxx';
って感じで変数にしてやりたいんですが。
0502JAPU01/10/02 22:39ID:???
>>500
foreach (<*.moe>) {
($x = $_) =~ s/\.moe/.tmp/;
rename $_, $x
}
とか?

csh 系なら、
foreach f (*.moe)
mv $f ${f:r}.tmp
end

bsh系なら、for .. done で。


>>501
chpass -p CRYPTEDPASSWD userなんてのはどう?

http://www.jp.freebsd.org/cgi/cvsweb.cgi/src/usr.sbin/adduser/adduser.perl?rev=.
とかも参考になるかも。
0503名無しさん@お腹いっぱい。01/10/03 01:59ID:VWQvA4GE
>>500
DOSなら ren *.moe *.hoe
■ このスレッドは過去ログ倉庫に格納されています