トップページ⇒php
981コメント366KB

【Perl 】初心者コーナーPart6

■ このスレッドは過去ログ倉庫に格納されています
0001undefさん2001/07/26(木) 00:40ID:???
初めて来た方、初心者はまずこのスレッドから始めよう。
尋ねる前に同じ質問がないかこのスレや旧スレ、及び>>2のリンクを一通り見てみよう。
案外答えはもう書かれているかもしれない。
0099JAPU@千影たん2001/08/01(水) 18:58ID:???
別に69たんを責めているわけじゃないので、勘違い無きよう...

とりあえず質問するときは、「具体的な目的」も併記すると吉かもしれない。
「○○をしたときに、云々...」という質問の仕方でも悪くはないけど、
実はそれよりもうまい方法を教えてもらえるかもしれないぞ。
0100名無しさん@お腹いっぱい。2001/08/02(木) 00:28ID:DguDE1y6
キャストのやり方おしえろやゴルァ!
0101 2001/08/02(木) 00:46ID:8xHqzTcA
/usr/libディレクトリと/usr/site/libは何を基準に分かれてるんですか?
0102名無しさん@お腹いっぱい。2001/08/02(木) 02:08ID:???
/usr/binと/usr/local/binが分かれてるようなもの
0103名無しさん@お腹いっぱい。 2001/08/02(木) 03:43ID:GB8M4TIE
2つの同じフォーマットのファイルAからBへのバックアップを考えています。
ファイルA,B共

postday#sing#cast#part#add
postday#sing#cast#part#add

と言った形式なのですが、無差別に追記して行くと内容が重複してしまうので
postdayをキーにして、ファイルBの最後の要素のpostdayとファイルA
のpostdayを比較、一致しなければそのままファイルBに追記、
一致する要素が有ればそこまでをpopして、ファイルBに追記したいのです。

バックアップの参考になりそうなスクリプトを見てみたのですが、
アレンジする事が出来ないでいます。
0104名無しさん@お腹いっぱい。2001/08/02(木) 03:50ID:???
>>103
単純にバックアップを取るのであれば、File::Copyでも使えばいいかと思いますが。
01051032001/08/02(木) 03:58ID:GB8M4TIE
>>104さん
レス有難う御座います。掲示板のログのような(実際は少し異なります)
小さなログファイルAを大きなファイルBにバックアップしたいのです。
ファイルAは保存期間や容量が小さい為に効率的にファイルBに保存したい
と考えています。
01061032001/08/02(木) 04:06ID:GB8M4TIE
やっぱり自分で考えなきゃ駄目ですね、
ファイルBを読み出して最後のエントリの日付"postday"を"$saisyuu"で得る。
ファイルAを読み出す。
$saisyuuとファイルAの"postday"を比較
重複しなければそのままファイルBに追記。
$saisyuuと一致する行がファイルAにあればそこまでを削除して、ファイルBに追記。

これで上手く行かないか挑戦してみます。 有難うございます
01071042001/08/02(木) 04:34ID:???
>>103
一例として。
statでファイル更新時間を取って、異なれば書き込み、とか。

my @file = qw(A B);
if ((stat $file[0])[9] != (stat $file[1])[9]) {
#...
}
0108名無しさん@お腹いっぱい。2001/08/02(木) 04:38ID:???
#!/usr/bin/perl
http://www.megabbs.com/program/index.html
0109>>1032001/08/02(木) 04:40ID:P5Z/J3iM
効率悪いけどこれじゃダメ?何MBもあるわけじゃないんでしょ?

# A を読み込み
open A,"a";
@aaa=<A>;
close A;

# B を読み込み
open B,"b";
@bbb=<B>;
close B;

# @aaa と @bbb の非共通部分を @ccc へ
for(@bbb){
@ccc=grep(!/$_/,@aaa);
}

# @bbb と @ccc の共通部分を @ddd へ
for(@bbb){
@ddd=grep(/$_/,@ccc);
}

# @aaa と @ddd を書き込み
open C,">a";
print C @aaa , @ddd;
close C;
0110名無しさん@お腹いっぱい。2001/08/02(木) 14:11ID:RSuVRy4c
えー、ちょっと訊きたいんですが、

サブルーチンの中でサブルーチンを実行し、
そのサブルーチンの中でも別のサブルーチンを呼んで…

という風にサブルーチンを入れ子にしていくと内側の階層の深いサブルーチンの
挙動がおかしくなっていくというか、時には動かないなんてことはあるんでしょうか?

ためしにある処理をそのまま書いてちゃんと動いたものを
サブルーチンとして{}で囲んで書いただけでおかしくなりました。

環境はWin+ANHTTPDなのですが、もしやWinPerlだけの症状なのでしょうか?
どなたかご存知の方いらっしゃいましたらお願いします。
0111名無しさん@お腹いっぱい。2001/08/02(木) 14:17ID:???
>>110
多分サブルーチンの書き方に問題があると思われ。
0112名無しさん@お腹いっぱい。2001/08/02(木) 14:17ID:???
>>110
そのスクリプトを出してくれ。
ありがちなものとしては、同じ名前のサブルーチンが他に存在してるとかかな?
w2k+ANHTTPDだけど、普通に動いてるよ。
01131102001/08/02(木) 14:23ID:VO0DTrjQ
すばやいレス感謝です。

>>111
各サブルーチン単体では全て期待通りに動作します。
入れ子にしていった場合にのみおかしくなるんです。

>>112
全部出すと相当長いのでちょっとここに出すのは勘弁です。
改めて確認してみたらおかしくなってるところは3重くらいになっているだけでした。

簡略化した形で書けたらあとで貼ります。

ありがとうございます。
0114名無しさん@お腹いっぱい。2001/08/02(木) 14:28ID:???
>>113
myのせいでサブルーチンの結果が外に出てないというオチもないよね?
01151102001/08/02(木) 14:36ID:VO0DTrjQ
>>114
いや、全部returnで明に結果を返してます。
#そういうことですよね?
01161102001/08/02(木) 14:53ID:???
んー。いろいろ削ってみたんですが、
関係するサブルーチンは6個ほど、200行くらいになってしまいます。
ここに晒すのはちとためらわれます。。。。

うーむ。。
0117名無しさん@お腹いっぱい。2001/08/02(木) 15:00ID:???
>>116
どっかにアップしてURL出せば?
0118名無しさん@お腹いっぱい。2001/08/02(木) 15:00ID:???
>>110
推測でしかないが。
引数渡しに失敗している可能性。
01191102001/08/02(木) 15:11ID:VCBoAI72
皆さんレスいただいて本当にありがとうございます。

例えばですね。

print $hoge;
print &Foo;

これで正常の出力が得られるのですが、これを

&Hoge;

sub Hoge{
    print $hoge;
    print &Foo;
}

と書くと何も出力されないのです。
こんなのってありなんでしょうか?

&Foo;の中でも複数のサブルーチンを呼んでます。
0120名無しさん@お腹いっぱい。2001/08/02(木) 15:32ID:???
>>119
それで挙動がおかしくなるなんて聞いた事無いが。
0121名無しさん@お腹いっぱい。2001/08/02(木) 16:01ID:IfHUjzJo
あまりにも初心者すぎて書き込むのに気が引けるのですが・・・

カタカナの語尾の長音を取るように置換したいのですが
(「コンピューター」→「コンピュータ」)
どのようにしたら良いでしょうか?
0122 2001/08/02(木) 16:02ID:8xHqzTcA
多分、死にたくなるような単純なミスでは?
01231102001/08/02(木) 16:23ID:???
>>120
だから困っているのでつ。
実は最初の状態でも
内側で呼んでいるサブルーチンの挙動が微妙に変なのだが…

>>122
そうなのかなあ…。

おれ、この間もそれやったんだよな…
そうだとしたらつくづくヴォケ野郎だな、、俺…。
0124名無しさん@お腹いっぱい。2001/08/02(木) 16:45ID:mjquR9Og
ラージオブジェクトの説明が詳しくのってる
ところありますかね。
実際の使用例とか・・・。
PHPとPostgresqlで・・。
0125名無しさん@お腹いっぱい。2001/08/02(木) 16:57ID:???
>110
出来ればサブルーチンを見せて欲しいが。
というかuse strictで引数渡しもちゃんとして書こうよ。
0126ちんちんの長さ12.5cm2001/08/02(木) 23:08ID:8xHqzTcA
------
use strict;
my $key;
foreach $key (keys(%ENV)) {
#処理...
}
------
と
---
use strict;
foreach my $key (keys(%ENV)) {
#処理...
}
------
では、体感できない範囲でも速度違いますか?
0127名無しさん@お腹いっぱい。2001/08/02(木) 23:09ID:SuLp4aV6
jcode.plの使い方で分からないことがあり、投稿することにします。

#!/usr/bin/perl -w

require 'jcode.pl';

$text = "あいうえお";

$code = &jcode::getcode(*text);

print "$code\n";

こういうスクリプトを作って実行すると、以下のようなエラーが出てしまいます。

[madjack@cluster /home/madjack]% ./perltest.pl
Can't locate jcode.pl in @INC (@INC contains:
/usr/lib/perl5/5.00503/ppc-linux /usr/lib/perl5/5.00503
/usr/lib/perl5/site_perl/5.005/ppc-linux
/usr/lib/perl5/site_perl/5.005) at ./perltest.pl line 3.

何がおかしいのでしょうか?
0128名無しさん@お腹いっぱい。2001/08/02(木) 23:37ID:I9vB6MGk
110ではないです。
use strictってどういった使い方をするんですか?
シェルでやってみたら、今まで動いてたスクリプトにエラーチェック(?)
が沢山でてきてしまいました。
125さんの引数渡しって言葉にも混乱してるんです。
すみません、余裕のある方教えて下さい。
0129名無しさん@お腹いっぱい。2001/08/03(金) 00:14ID:eb2ym/zs
POP3サーバから「ウィークリーまぐまぐ」の重たいメールだけを削除
したいですが、何か簡単なスクリプトありませんか?
0130名無しさん@お腹いっぱい。2001/08/03(金) 00:15ID:eb2ym/zs
>>129
サブジェクトにWeekly Mag2が入ってるのを削除
0131名無しさん@お腹いっぱい。2001/08/03(金) 00:44ID:???
>>126
違うよ。上のほうが速い。

>>127
@INCにjcode.plが無いと言われてる。
エラーメッセージは英語だから読まないというのは止めましょう。
これくらい調べれば読める範囲なので。
で、requireに問題が。
パス無しで指定すると@INCを探しに行くので、
'./jcode.pl'等と実際に置かれている場所を指定しましょう。
0132名無しさん@お腹いっぱい。2001/08/03(金) 00:48ID:???
>>128
use strictと宣言することによって、
コンパイル時にレキシカル宣言されていない変数があると、エラーになります。
グローバル変数が使えなくなるというわけで。

引数渡しってのは、&sub_routine($hoge, $fuga);
みたいにサブルーチンに引数を明示的に渡すのです。
これで、サブルーチンには2つの引数しか行かないことになります。

# 日本語的におかしいかもしれないが、ご容赦。
01331282001/08/03(金) 01:05ID:ldQ3DQJ.
>>132
ありがとうございます!
>グローバル変数が使えなくなる
だ・・だからあんなにエラーが出たのか・・・
それでもきちんと動作することがいいスクリプトってことですかね
なんでこんなやっかいなものを皆さんお使いに・・・?
素朴な疑問でした。^ ^;
01341322001/08/03(金) 01:37ID:???
>>128
「自分しかそのスクリプトを見ない」
「どこかでエラーが起こっても、自分はすぐわかる」
「自分は絶対typoしない」
このあたりの条件を兼ね備えているのなら、全部グローバルでもいいのかもね。

私はいつもuse strictしてます。

# ちなみに、my宣言した変数のほうが、グローバルより若干速い。
0135名無しさん@お腹いっぱい。2001/08/03(金) 01:52ID:???
グローバル変数が使えなくなる訳では無いですよ。
Perl5.6以降ならmy($var)同様の使い方でour($var)が、
それ以前のVersionならuse vars qw/$foo @bar/;とし、
宣言したグローバル変数を使用可能に出来ます。

私も初心者の頃はuse strictなど煩わしいだけ、と思っていましたが、
今では反射的にuse strictを書くようになりました。
慣れるまで色々面倒でしょうが、
黙って使っていると後々幸せになれるはずです。
01361322001/08/03(金) 01:57ID:???
>>135
詳しいフォロー、ありがとう。
01371282001/08/03(金) 03:04ID:ldQ3DQJ.
>>134 ,135
詳しい説明ありがとうございました!
むぅ。凄く勉強になります。
わたしの持っている本にはこんな事全く書いていなかったので・・
今後少しずつ規模の大きいスクリプトを組んでいくのなら、
今のうちに慣れてきちんと書けるようにした方がいいですよね。
しかし組み方を1から考えなおさなくちゃ難しそうですが(泣)
がんばってみます!
0138名無しさん@お腹いっぱい。2001/08/03(金) 04:24ID:???
win98のHTTPDでチョコチョコプログラム組んでるんですが、
丁度良いネタがでたので質問します。

ローカルで
for(my $i=1;$i<100;++$i){
##処理##
}

というプログラムを走らせると$iが0から始まってしまいます。
if文などでも同様です。
サーバにアップロードするときちんと動作するんですが、
やはり使用環境がいけないのでしょうか?

ちなみに
my $i;
for($i=1;$i<100;++$i)

だとローカルでもきちんと1から動いてくれます。
0139名無しさん@お腹いっぱい。2001/08/03(金) 04:40ID:???
>>138
for (my $i = 1; $i < 100; ++$i) { print $i,"\n" }
# 1
# 2
# ..
# 99
きちんと出ましたよん。
ちなみに当方ローカル環境、Win2k + Apache1.3.20 + ActivePerl623
0140名無しさん@お腹いっぱい。2001/08/03(金) 05:22ID:???
>やはり使用環境がいけないのでしょうか?

君の使用環境がわからなくては誰にも判断しようがないと思うが。
ネタですか?
0141うん2001/08/03(金) 06:21ID:wwW.OFoE
うん
0142名無しさん@お腹いっぱい。2001/08/03(金) 06:28ID:???
>>141
子供は早く寝なさい(藁
0143103 2001/08/03(金) 07:53ID:aOu/LdE6
>>107
>>109
レスが遅れてしまいました。お二方のアドバイスが参考になって色々なアプローチ
が有るのが分かりました。
一応、一日格闘した挙句(^^) ファイルAのサイズは比較的小さくファイルBはなるべく
大きなサイズを確保したかったので、perlメモさんで
http://www.din.or.jp/~ohzaki/perl.htm#File_Tail
を頂いて来まして、これでファイルBの最後の一行を得る→
$saisyuuとファイルAのpostdayを比較→一致する行が出現すればそれ以降を破棄
→ファイルBに追記モードで書き込み、と言う感じになりました。

今ローカルでとろとろと動いています(^^)
grepとか回した事が無かったので新鮮でした、色んな考えかたが有るんですね。
ありがとう御座いました。
01441272001/08/03(金) 11:50ID:dhEi2JqU
>>131
ありがとうございます。
できました。
0145名無しさん@お腹いっぱい。2001/08/03(金) 14:24ID:02P8SgLY
以下のcgiファイルと、htmlファイルを使って入力したものをファイルに書き込
み、ブラウザにも表示させるというプログラムを作っています。しかしながらブ
ラウザに表示することはできるのに、それをファイルに書き込むことができませ
ん。スクリプトをどう見直しても分からないので、ここの方に頼ることにしまし
た。

ちなみに『print <<"HERE";』以下を削って実行するとInternal Server Error
となってしまいます。

cgiファイル

#!/usr/bin/perl -w

$file = "log.txt";

read(STDIN, $in, $ENV{'CONTENT_LENGTH'});

open(OUT, ">$file");

print OUT $in;

close OUT;


print <<"HERE";
Content-Type: text/html

<html><body>
$in
</body></html>

HERE

__END__

htmlファイル
<form method="POST" action="cgi-bin/prot3.cgi">
<html><head><title>
テスト
</title></head><body bgcolor="#000000">
<font color="#ffffff">
名前:<input type="text" name="name"><br>
パス: <input type="password" name="pass"><br>

<input type="submit" value="OK"><input type="reset" value="reset">
</font>
</body></html>
0146名無しさん@お腹いっぱい。2001/08/03(金) 14:50ID:???
>>145 ソースは見てないが
scriptじゃなくて、実行ユーザーとディレクトリのパーミッションだろ
01471462001/08/03(金) 15:13ID:???
>>145
ためしに 0バイトのログファイルをftpで送って 666 にするとどうなる?
0148名無しさん@お腹いっぱい。2001/08/03(金) 15:27ID:???
滅茶苦茶なHTMLだな
0149名無しさん@お腹いっぱい。2001/08/03(金) 15:43ID:???
system("/usr/bin/compress -e datafile.txt");
0150名無しさん@お腹いっぱい。2001/08/03(金) 18:53ID:???
my宣言についてですが、

my($hoge);
$hoge = hoge;
$hoge = hoge;
$hoge = hoge;

と、

my $hoge = hoge;
$hoge = hoge;
$hoge = hoge;

は同じ効果が出ているのでしょうか。
01511452001/08/03(金) 22:37ID:???
>>147
いけました。
まさかパーミッションが絡んでいたとは思いませんでした。
cgiではなく、ファイルをオープンして書き込む部分を
普通のスクリプトとして実行すると666でなくても書き込めるのに・・・。
うーん。

ありがとうございました。
0152名無しさん@お腹いっぱい。2001/08/04(土) 04:07ID:???
普通のスクリプトとして実行したときは実行したユーザー
cgiだとnobodyとかwwwとかになるんよ。(サーバーの設定によるが)
で、そのログファイルのあるディレクトリの属性w(作成・削除)が
ついてないから新規作成ができなかったのね
ディレクトリを707にすれば作成もできると思うけど
cgiと同じディレクトリはさけたほうがいいよん
0153名無しさん@お腹いっぱい。2001/08/04(土) 04:35ID:???
サーバ上でファイルをアーカイブ化・圧縮するためにはどうすれば良いですか?
0154名無しさん@お腹いっぱい。2001/08/04(土) 04:55ID:eUp0QEZw
ふと思ったけど「初心者」ってどの程度のもの?
どこまで知ってれば中級者っていえるのかなー。
上級者の方に聞きたいです。
奥が深すぎて判断つかない。
0155名無しさん@お腹いっぱい。2001/08/04(土) 05:37ID:vq//mZ8w
print "hello world"\n:

↑初心者
0156名無しさん@お腹いっぱい。2001/08/04(土) 06:22ID:???
>>155
はまった(w < n:
で、ここのスレで質問してる人は初心者だと思ってるんでしょ?
自分も思ってるし。
0157すごく初心者2001/08/04(土) 07:43ID:???
こんなCGI探してますスレッド
http://corn.2ch.net/test/read.cgi?bbs=php&key=988777987&ls=50

↑で見つけた自動更新cgi(?)なのですが、
どういう処理をしているのか、お暇な方、解説して欲しいのでありまする。


#!/usr/local/bin/perl
%html = ('0802' => 'index.html',
'0803' => 'nya.html',
'0804' => 'zzz.html',
);
@time = localtime();
$html = $html{ sprintf "%02d%02d", $time[4]+1, $time[3] };
printf "Location: $html\n\n";
0158名無しさん@お腹いっぱい。2001/08/04(土) 07:56ID:DYf6StlI
適当な文から特定の文字だけ抜き出すにはどうすればよいのでしょうか?
たとえば、
てきとう6なぶん
なんて文があったとき(変な文だけど。。)数字の6を抜き出すにはどうすればよいのでしょうか?
いろいろ試行錯誤しましたがどうしてもできません。お願いします。
0159名無しさん@お腹いっぱい。2001/08/04(土) 07:57ID:eUp0QEZw
0802だったらindex.html
0803だったらnya.html
・・・(続く)
っていう定義リストを作っておいて。
@time = localtime(); で現在の日付けを取得
$html = $html{ s・・・のところで、日付けを”0802”とかの数字の並びにする
すると、$html{'0802'}となるので、最初の定義で0802だったらindex.htmlとなる。
最後に、printf "Location: $html\n\n";
で、自動的にindex.htmlにジャンプ。
0160157@すごく初心者2001/08/04(土) 08:38ID:???
>>159さん
どうもありがとうございます。
助かりました。
0161名無しさん@お腹いっぱい。2001/08/04(土) 08:49ID:eUp0QEZw
>>159
$meta='てきとうな6文字';
if($meta=~/\d/){print "$& \n";}

数字だったらこれでいけるけど、抜き出したい特定の文字がなんなのかによる。
0162名無しさん@お腹いっぱい。2001/08/04(土) 09:00ID:???
>>161
>>158へのレスだよね?
01631582001/08/04(土) 09:16ID:DYf6StlI
>>161
この場合はどうやればよいのでしょう?
適当な文字56<!--tekito6-->適当な文字65
とかいう文の場合<!--tekito6-->の6(数字)だけを抜き出して、他の変数に代入するには
どうすればよいのでしょうか?161さんの方法ではうまくできませんでした。
お願いします。
0164JAPU2001/08/04(土) 10:30ID:???
if(/<!--tekito(6)-->/) { $hoe = $1; }
0165JAPU2001/08/04(土) 10:31ID:???
あ、こうか。
if(/<!--tekito(\d)-->/) { $hoe = $1; }
01661582001/08/04(土) 12:36ID:DYf6StlI
JAPUさんありがとうございます!うまくできました!
0167名無しさん@お腹いっぱい。2001/08/04(土) 12:37ID:DQ4jThjY
クッキーに関しての質問です。
クッキーに配列を保存できますかね?
例えば、
$data=array(
"a" => "hoge1",
"b" => "hoge2"
);
SetCookie("hogehoge", $data);
こんな感じで$data配列を作成しクッキーに保存して、
$c_data=$HTTP_COOKIE_VARS["hogehoge"];
で、データを呼び出して
echo"$c_data[a]";
で出力できるようにしたいのですが、
なかなかうまくいかないです。
0168JAPU2001/08/04(土) 13:41ID:???
>>167
それは本当に Perl なのか?
0169名無しさん@お腹いっぱい。2001/08/04(土) 13:44ID:DQ4jThjY
>>168 すいません。
PHPでした。スレッド間違い(汗
0170名無しさん@お腹いっぱい。2001/08/04(土) 16:54ID:PSOASf6I
まったくの初心者です。
WEBサイトを作りたいのですが技術的なアドバイスをお願いします。

・IDの作り方は?
ユーザーIDとメールアドレスを登録すると自動的にパスワード付の
メールが送られますよね?で、クッキーをオンにしてログインする。
そ〜いった技術です。ヤフーとかもそうですよね。
専門のスレがあれば教えてください。
まったくの初心者の教えて君で本当にすいません。
0171コメント無しさん2001/08/04(土) 17:42ID:???
>>170
>IDの作り方は?
登録順でいいんじゃない?
0172名無しさん@お腹いっぱい。2001/08/04(土) 18:49ID:8Ac4eVMA
CGIファイルの中にHTMLを組み込んでる最中なんですけど
スタイルシートは使えませんか?

それと、HTMLファイルで   このように入力すると
半角スペースになりますが、CGIファイルの中ではこの
特殊文字をどのように置けば半角スペースになるでしょうか?
0173名無しさん@お腹いっぱい。2001/08/04(土) 18:58ID:???
>>172
当然使える。
適当なところに CSS ファイルを置いて、link タグの href 属性で呼び出せば良い。

このようにって、見えん。
&nbsp;って居れてるのかな?
&と;は¥でエスケープしないとならないはず。
0174名無しさん@お腹いっぱい。2001/08/04(土) 21:41ID:QrWijtIY
>>173
レスありがとうございます。
早速試してみます。

# 2chでもまともにレス返ってくるんですね。
# うれしいです(^^
0175IY2001/08/04(土) 21:53ID:???
そこにあるでしょ?
01761532001/08/04(土) 23:34ID:???
どうすれば・・・・。
0177名無しさん@お腹いっぱい。2001/08/05(日) 00:44ID:???
>>153
モジュール使えばいいでしょ。
0178名無しさん@お腹いっぱい。2001/08/05(日) 00:53ID:Y9qpbhzk
本当に初心者で申し訳ないのですが、セッションって
何でしょうか? よくTCPでセッションを張る?という
表現(この表現も正しいかわからないんどえすが)が
ありますが、通信経路を確保するということでしょうか?
01791532001/08/05(日) 05:43ID:???
モジュールはどうやったら使えますか?
0180名無しさん@お腹いっぱい。2001/08/05(日) 06:05ID:???
>>153
useすればいいだけですが。
use Compress::Zlib;
アーカイブ作るんならこれか?
01811702001/08/05(日) 15:23ID:.gPxxl9o
>>171
説明の仕方が悪かったようですね。
お聞きしたいのは、‘どうやったらそ〜いうことができますか?’です。
親切な方教えてください。
0182JAPU2001/08/05(日) 17:45ID:???
Compress::Zlib はアーカイブは作れないんじゃない?

Compress::Zlib を入れたら、
perldoc Compress::Zlib
しましょう。
0183名無しさん@お腹いっぱい。2001/08/05(日) 18:33ID:???
>>181
登録順のIDなら
現在のID取得して変数に突っ込んでそれに+1するだけでOKでは?
パスワードは、適当な文字ランダムで作ってcryptでもすればできるんじゃん?

# 永遠の初心者なのであんまり信用しない方がいいかも
0184コメント無しさん2001/08/05(日) 19:04ID:???
>>181
データベース使ってるなら「自動加算型」みたいなのがあるからそれ使う
使ってないなら、最新のIDをファイルに書いといて、登録のたびにそいつを
増やしていく。
01851532001/08/06(月) 04:28ID:???
やはりWIN98+HTTPDっていう夏厨装備ではモジュールは使えませんか?
ちなみにF2S使ってるんですが、一般の無料サーバでも試せませんよね?
0186名無しさん@お腹いっぱい。2001/08/06(月) 04:57ID:QmPH6qXg
$ENV{"HTTP_REFERER"}と$ENV{'HTTP_REFERER'}という2種類の書き方を見かけるんですが、
"と'はどう使い分ければ良いんでしょうか?
0187名無しさん@お腹いっぱい。2001/08/06(月) 05:41ID:???
>>186
使い分けなくても良いです。
お好みに合わせて使いましょう。
$ENV{HTTP_REFERER}
もありです。
0188名無しさん@お腹いっぱい。2001/08/06(月) 05:46ID:???
>>185
f2sは鯖のコマンドでgzipが使えるね、と密かに選択肢を増やしてみたりする。
0189名無しさん@お腹いっぱい。 2001/08/06(月) 11:09ID:???
ものすごく初心者で恐縮なんですが、perlに処理させている
数値演算をそのままSTDINから入力して電卓にする
と言う訳には行かないのでしょうか?
$n = <STDIN>;
print "$n\n";
ってして 1+1 と入力すると、当然 1+1 と表示されるだけです。
変数が展開されて、ついでに中の数式も計算してくれたりは出来ないですよね。
ちゃんと演算子と数値に分けて数値を変数に代入して、内部? で
計算した後表示するしかないのかなぁ、、
0190名無しさん@お腹いっぱい。2001/08/06(月) 11:38ID:???
use strict;
$_ = <STDIN>;
@_ = split/\+/;
print $_[0] + $_[1];

あとは適当にやってね
0191名無しさん@お腹いっぱい。2001/08/06(月) 11:39ID:???
>>189
eval
0192名無しさん@お腹いっぱい。2001/08/06(月) 11:55ID:???
有難う御座います。>>190、えっと、すいません、そんな感じで
色々作ってみてるのですが、ふと最後の式が入力した式そのまま(あたり前ですが)
なので、perlの演算式をそのまま与えれば3行位で電卓が出来ちゃうかな
と考えてしまったんです。
>>191、
うわ、有難う御座います。4文字で解決です  (笑)
馬鹿はevalを使っちゃ駄目と何処かで見たんで、、、
文字列をプログラムとして評価してくれるんですね。
なるほどー、危ない訳も良く分かりました。 感謝です。
0193名無しさん@お腹いっぱい。2001/08/06(月) 12:15ID:???
こう言う事か・・・・
$n =<STDIN>;
print eval("$n");
何か感動した ^ ^ )
0194名無しさん@お腹いっぱい。2001/08/06(月) 13:57ID:c9LAtMIM
ある処理に要した時間をミリ秒単位で計測する方法はありませんか?
具体的には、webでGETに要した時間を計測したいのですが・・・
0195名無しさん@お腹いっぱい。2001/08/06(月) 14:20ID:???
>>194
Time::Hires
http://www.bekknet.ad.jp/~bero/docj/module/06/Time_HiRes.html
01961942001/08/06(月) 15:01ID:???
>>195
何とか実現できました。ヽ(´ー`)ノ
情報ありがとうございました。
0197名無しさん@お腹いっぱい。2001/08/06(月) 16:42ID:???
>>193
電卓なら、
$n =~ m/[^\d\+\*\/\.\s]/ && ...;
な感じで、入力値チェックもしたほうがいいかもね。
0198名無しさん@お腹いっぱい。2001/08/06(月) 16:44ID:???
何もチェックしないと任意のコードを実行できちゃうからね。
馬鹿はevalを使うなってのもそういうことだろうね。
0199189 2001/08/06(月) 17:22ID:???
詳しい説明ありがとッス。なるほど、JAPUさんがサイトで書かれてる
汚染チェックってやつですね、確か僕が見た所でもそう言ったニュアンス
で書かれてました。
それにしても、、+-だけで演算子と数値は5個まで、とか言うダサイ
電卓をif ($_ =~ /\d/).... とかズラズラ並べて書いてたんで
目から鱗落ちまくりです。
了解しました、cgiでは当分使わないです  (笑)
■ このスレッドは過去ログ倉庫に格納されています