トップページ⇒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を見よう。
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
0504FREAKES01/10/03 02:32ID:iOlT3Zgg
http://www.freakes.dyn.to/
うまく掲示板のCGIが動作しません
どうしてでしょう、自分では、みれるのに
0505名無しさん@お腹いっぱい。01/10/03 02:38ID:???
http://127.0.0.1/aska.cgi
0506名無しさん@お腹いっぱい。01/10/03 03:42ID:???
>>504
マルチポストうざい。
0507名無しさん@お腹いっぱい。01/10/03 05:39ID:xNIE/jvQ
アクセスカウンタを作ろうとしています。

しかし以下のようなスクリプトだとどうもうまく行きません。
$counterlogのファイルを作成して一度目、二度目は1、2とカウントされ、表示
もされるのですが、三回目はいきなり13となります。4回目は1214、5回目は
12131215という具合です。

sub counter {

open(COUNTER, "+<$counterlog");
$counter = <COUNTER>;

++$counter;
print COUNTER $counter;
close(COUNTER);
}

どこがおかしいのか分かりません。

よろしくお願いします。
0508名無しさん01/10/03 05:52ID:xwMhor1s
printのまえにseek COUNTER, 0, 0;かな?
0509名無しさん@お腹いっぱい。01/10/03 06:27ID:7VPeoMkk
gzipを使ってみたいのですが、Windowsでテストできますか?
0510名無しさん@お腹いっぱい。01/10/03 07:00ID:???
>>508
投稿したあとで検索エンジンで調べてみるとtruncate(COUNTER, 0);と
seek(COUNTER, 0, 0);との組合せを発見しました。

seek(COUNTER, 0, 0);だけでもいいのか・・・。

いろいろ試してみます。

ありがとうございます。
0511名無しさん@お腹いっぱい。01/10/03 07:03ID:1Z0sNt2w
>>509
Windows用のgzipをGETせよ → http://www.gzip.org/
0512名無しさん@お腹いっぱい。01/10/03 07:12ID:???
>>509
『出来る』と答えりゃ良いのか?

えすぱってみると、mod_gzipかCygwin辺り?
何をしたいのか書いとらんから、さぱ〜り分らん。

> 良い回答は良い質問から
>>1 を良く読んでくれ。
051350901/10/03 07:32ID:7VPeoMkk
すいません。mod_gzipでHTML出力をしたいのです。
051450901/10/03 08:46ID:???
環境はWin2000 + Perl + ANHTTPDです。
apache for win32を入れないと駄目なのでしょうか?
0515名無しさん@お腹いっぱい。01/10/03 09:20ID:???
>>514
ANHTTPDは触ったことないんですけど、
Win2000 + Apache for Win32 ならmod_gzip入れるのは簡単ですよ。

ていうか513を読んで、試しに↓からダウンロードしてみたら
あんまり簡単に動いてびっくりした。
http://www.remotecommunications.com/apache/mod_gzip/
0516ファイルの新規作成01/10/03 12:36ID:???
新規でファイルを作成するにはどうすればよいですか?
まだ存在しないので open ができずファイルハンドルが
取得できません。
051751601/10/03 12:41ID:???
すみません。うまくいきました。openできないと思っていたのは
他のエラーが原因でした。
0518えび01/10/03 12:41ID:tut8CQIE
>>510
seek(COUNTER, 0, 0);で良いと思います。
seek(COUNTER, 0, 0);はファイルポインタを先頭までまき戻す。
truncate(COUNTER, 0);はファイルを0バイトまで切り詰める。
という処理ですが、
カウンターファイルに新しく数値を記入する場合であれば
seekで先頭にまき戻して新しいカウントの数を上書きすれば良いと
思います。
カウンターは桁が増えても桁が減るという事はないので
以前のデータから上書きしても以前のデータの切れ端とかが
残る事はないのでseekだけで問題はないでしょう。
0519初心者だけど検索くらいは出来る人01/10/03 12:49ID:???
http://www.harukaze.net/~mishima/perl/faq/newbiefaq.html#4
052051901/10/03 12:50ID:???
>>519は>>516宛。
しかも解決してるし。
逝ってきます。
0521名無しさん@お腹いっぱい。01/10/03 12:54ID:???
かわいそうなので逝ってらっしゃいのキスして あ・げ・る(はぁと

ブチュゥ〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
0522名無しさん@お腹いっぱい。01/10/03 13:34ID:6LJeEkqs
>>521
まじで背筋がゾッとしたからやめてくれ
0523 01/10/03 14:13ID:???
数段階の仲介を経てからでしかその知識を得られないなんて。
理想ならその業界の技術書を熟読するのが一番なの。
サバ構築だって然り。ネットとは何か?と言うこと。
書店にあるものを読んでるうちは中級どまり。
高校の微積分を学ぶときは決してニュートンやライプニッツの原書を読まないのは単に難易度の問題。
機会があれば読むべき。
0524名無しさん@お腹いっぱい。01/10/03 14:20ID:???
523 は何が言いたいのか要点を纏められたし。
0525 01/10/03 14:36ID:???
サラサーテ、著者の飯代の為に使い物にならない偽専門書を買うな!
業界が発行してる物を無料で入手できそうなんだから!
0526 01/10/03 14:37ID:???
まぁ、C/C++ならJIS X 3010やANSIから入手したらいいんだよ
厨房を偽装して買いあさるな!
0527 01/10/03 14:40ID:???
オレはソフトにはカネは使わん!(エンターテイメントは除外)
ハードにはしぶしぶ使う。
けどアキバで部品単位でBSテレビが作れるなら
それに超したことはない
故障のたんびに悪対応の窓口は死ね!
0528名無しさん@お腹いっぱい。01/10/03 14:43ID:???
スレ違い。カエレ!!
0529名無しさん@お腹いっぱい。01/10/03 15:01ID:HFewZhw6
とほほさんのwwwsrchを使っているのですが
これってcgiファイルの文字は検索対象に入らないのでしょうか?
掲示板の書き込みとかもトップページから検索できるようにしたいので。

どなたかご存じの方は教えて下さい。
0530101/10/03 15:11ID:1nsRDm4c
http://www5.justnet.ne.jp/~ttp/
0531名無しさん@お腹いっぱい。01/10/03 15:57ID:???
>>529
スレ違い。つかマルチポスト死ね。
0532名無しさん@お腹いっぱい。01/10/03 16:41ID:???
そんなことより腹減らねぇ?
0533丸出し01/10/03 17:23ID:eJHCCMAc
最近一日一食だ…。
ところで話を戻しますが、
なんかナイスタイミングで529と似てるんですけど
文字列検索する時って正規表現じゃなくて
index使う利点ってあるんですか?
これだと大文字小文字区別しない風にできないと
今の知識だと思うんですけども…?あほな事いってます?
0534a'x01/10/03 17:35ID:???
正規表現よりindexの方が速い。
0535名無しさん@お腹いっぱい。01/10/03 17:40ID:???
↑本に書いてあること真に受ける馬鹿
0536a'x01/10/03 17:43ID:???
http://www.din.or.jp/~ohzaki/perl.htm#JP_Match
ら辺読め。
0537名無しさん@お腹いっぱい。01/10/03 17:44ID:???
アホな質問かもしれませんが while ループでは
カウンタは自前で用意する必要がありますか?
$xxx みたいにあらかじめ使える変数が用意されているとか
ないですか?持っている本には出ていないのですが
あればいいなと。
0538名無しさん@お腹いっぱい。01/10/03 17:46ID:???
↑Webページに書いてあることを検証もせずに受け売りをする馬鹿
0539名無しさん@お腹いっぱい。 01/10/03 17:46ID:???
$xxxって何? そんなの有るのか???
0540名無しさん@お腹いっぱい。01/10/03 17:46ID:???
>>537
ないよん。
0541名無しさん@お腹いっぱい。01/10/03 17:47ID:???
>>538
Benchmarkやindexの使い方分からない猿  ププ
0542名無しさん@お腹いっぱい。01/10/03 17:48ID:???
低レベルな争いはよせ。
>>541
そんな奴いない。
0543名無しさん@お腹いっぱい。01/10/03 17:51ID:???
下らないことには盛り上がるね。
0544名無しさん@お腹いっぱい。01/10/03 18:02ID:???
PCとi-mode共用の掲示板を作っているのですが、
半角カナで入力された場合、全角カナに自動的に直して
表示する環境変数を教えて下さい。バイト数をチェックすれば
いいんでしょうか?
0545名無しさん@お腹いっぱい。01/10/03 18:02ID:???
#! /usr/local/bin/perl
use Benchmark;
open FH, "./seek.dat";
@lines = <FH>;
close FH;
timethese(16, {
'REGEXP ' => \&find_by_regexp,
'INDEX ' => \&find_by_index,
} );
sub find_by_regexp {
my $count = 0;
foreach (@lines) {
if (/an/) {
$count++;
}
}
}
sub find_by_index {
my $count = 0;
foreach (@lines) {
if (index($_, "an") >= 0) {
$count++;
}
}
}

Benchmark: timing 16 iterations of INDEX , REGEXP ...
INDEX : 3 wallclock secs ( 3.31 usr + 0.00 sys = 3.31 CPU) @ 4.83/s (n=16)
REGEXP : 4 wallclock secs ( 4.02 usr + 0.00 sys = 4.02 CPU) @ 3.98/s (n=16)

2万行のデータで検証。
0546名無しさん@お腹いっぱい。01/10/03 18:03ID:???
結論 535 538 はただの煽り。
0547名無しさん@お腹いっぱい。01/10/03 18:05ID:???
$ENV{'ZENKAKU_TO_HANKAKU'}の事ですか?
これを使えばいいですよ?
検索して頑張って下さい?
0548名無しさん@お腹いっぱい。01/10/03 18:05ID:???
当たり前の常識を検証して大得意の545萌え
■ このスレッドは過去ログ倉庫に格納されています