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

【Perl 】初心者コーナーPart8

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

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

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

参考書籍はこちら【【Perl,CGI】参考書籍 第2版 】
http://ebi.2ch.net/test/read.cgi/php/988809842/l50
CGIの質問はこちら【CGIだけど、なんか質問ある?part4】
http://ebi.2ch.net/test/read.cgi/php/1000804655/l50

過去ログ、その他の役立ち情報は>>2-10を見よう。
0486名無しさん@お腹いっぱい。01/11/29 19:08ID:???
ふざけた変数名だね
どうせKENTのパクるなら全部コピペすれば?
Sun, 01-Jan-2000 12:12:12 GMT
0487名無しさん@お腹いっぱい。01/11/29 19:19ID:???
>>486
書き込めたから前の質問はいいわ。
じゃあパクッてないクッキーの記述の条件をおせーてくれ。
無論ソースで実例記述はいらんよ。
こことこことここが違えばパクって無いオリジナルであるって条件。
スカラ変えればいいってもんでもないだろうし、一つ頼むわ。
0488名無しさん@お腹いっぱい。01/11/29 19:26ID:???
偉そうなヤツが居るな。
0489名無しさん@お腹いっぱい。01/11/29 19:30ID:???
つーか>>485ってKENTの奴に似てるように見えるかね?
時間取得から寄せ集めprintなんてどこでもやってると思うが。。。
どーでもいいが$C_mail=kumanko;はといあえず書き込んでないから
意味無いね。
0490名無しさん@お腹いっぱい。01/11/29 19:33ID:???
$c_mail = "kumanko";
これは何を意味してるんだ?一回しか出てこんけど。
0491名無しさん@お腹いっぱい。01/11/29 19:33ID:???
$ydaygなんてダサイ名前付けるのは限られてると思われ・・・
どう言う意味?$ydayg  ぷ
0492名無しさん@お腹いっぱい。01/11/29 19:36ID:???
変数を局所化してないから、他の変数とかぶらんように、
分かりにくい変数名にしないといかんのだろ。
0493名無しさん@お腹いっぱい。01/11/29 19:38ID:???
クッキーはちゃんとデコードしとけ。
0494486 01/11/29 19:40ID:???
あ、ゴメンネ 怒った(笑
まあパクって無いってんならそうなんでしょう
>>時間取得から寄せ集めprintなんてどこでもやってると思うが。。。
んな事しなくても、gmtimeに投げてsplitすりゃ良いんで
普通はそうします(w
KENTとは言わんがどっかで拾ったコード使って、変数の中吐き出して
確認も出来ないなら、そのまま使えばよろしいかと・・・
0495 01/11/29 19:39ID:???
滅茶苦茶叩かれとんな・・・
0496名無しさん@お腹いっぱい。01/11/29 19:42ID:???
誘導して闇討ちで実力計るつもりでいたが、即座に
実力いっぱいいっぱいの典型例>>488みたいなのが
出てくる所を見ると3段階、4段階の質問受けれる程話せそうな奴は
噂の2ちゃんにもいなさそうだな。天秤計測終了。
興味無いから適当に煽って後は放置でいいよ。君に興味無いから(ワラ

>>489
あーそうだよ。すまんね。意味無いからそこ削除するか
printで名前書きの下にもmail用の一行加えといてくれ。
ソッコーで書いたからミスっちまったい。
0497名無しさん@お腹いっぱい。 01/11/29 19:47ID:???
つーかこんな事一々配列で受けてゴチャゴチャやってる時点で
アホだと思うが
それを最初にばら撒いたのがKENT氏って事か?
0498名無しさん@お腹いっぱい。01/11/29 19:49ID:AMvwJSR+
>んな事しなくても、gmtimeに投げてsplitすりゃ良いんで
>普通はそうします(w

ちょっと溜息。パクってるって言われるくらいそっちのが
メジャーだと思うからシャレきかせたつもりだが。。。
書き方あえて変えてんだから読み取ってネ。じゃ無駄な時間使って
煽ってくれ。バイバーイ低次元。
049948601/11/29 19:50ID:???
>>497 そそ
んで、コンテキストも解らん人達がこのやり方を普及してるんです(笑
その典型じゃ無いかな
05003行で済むな 藁01/11/29 19:56ID:???
$exptime = gmtime(time+10*60*60*24);
($wday,$month,$day,$time,$year) = split(/ /,$exptime);
print "$wday, $day-$month-$year $time GMT\n";
ほら、これで満足だろ? GPLだからソース公開しろよ 藁
0501名無しさん@お腹いっぱい。 01/11/29 19:58ID:???
>誘導して闇討ちで実力計るつもりでいたが、、、
悲惨過ぎる・・・
0502486 01/11/29 20:21ID:???
>>500 多分このまま使って逆切れに一票(笑
0503名無しさん@お腹いっぱい。 01/11/29 20:52ID:???
素人が噛み付くとエライ目にあう事が実証されました(・∀・)
らくだ位読もうね みなさん
0504名無しさん@お腹いっぱい。01/11/29 22:30ID:???
ファイルの行数をカウントするエレガントな方法を教えて下さい

ぼくは下記のようにやっているのですが,すっごく厨房ぽいです


#!/usr/local/bin/perl
open FILE, $file or die "can't open $file:$!\n";

$cnt = 0;
while(<FILE>) {
$cnt++;
}

close FILE;

print "$fileの行数は$cnt行です\n";
0505名無しさん@お腹いっぱい。01/11/29 22:48ID:???
>>504
こんなん。
$cnt+= tr/\n// while read FILE, $_, 1024;
0506名無しさん@お腹いっぱい。01/11/29 23:04ID:???
>>500
これ役にたったよ、何も+1900とかしてシコシコ計算する事無いんだね
俺もKENT病だったようだ(´Д`;)
月をハッシュに入れて日本語表示も随分すっきりしました
# つくづく>485は悲惨だと思った
0507   01/11/30 00:27ID:JaJKMNFa
.アクセス制限は設定出来ますか?
http://home.big.or.jp/index.html?WWW_MENU=m021002h#003
の説明が良くわかりません。

.htpasswd

AuthUserFile /public/pub?/home?/(UserID)/html/secret/.htpasswd
AuthGroupFile /dev/null
AuthName member
AuthType Basic
<Limit POST GET PUT>
require user (UserName)
</Limit>

の設定をして、IDと、パスワードを要求される画面までいきますが・・
アクセス成功できません。Perlのバージョンによって記述が異なるようですが。
$ perl -v

This is perl, v5.7.0 built for i686-linux

です。
このサイトを利用しているかたのアドバイスをいただけないでしょうか?
0508 01/11/30 00:38ID:???
>>507
基本認証はperlとは関係ないよ。
.htpasswdは正確に記述してある?
AuthUserFileにはパスを正確に記述してある?
0509   01/11/30 01:08ID:JaJKMNFa
>>508
AuthUserFile /public/pub?/home?/hoge/html/cgi-bin/.htpasswd
・・・

こういう感じ
「?」っているのかな。外すと駄目みたい。

Options -Indexes

とした場合、に同ディレクトリにあるファイルに直接アドレス入力すると、
見えてしまうのですが、これを見せない方法ってありますか?
0510名無しさん@お腹いっぱい。01/11/30 01:14ID:???
htpasswd作ったのか? Telnet使えるみたいだから
その辺の説明サイトみながら作れ。
その/public/pub〜〜 って所はpwdって打って出てきたのを入れろ
0511名無しさん@お腹いっぱい。01/11/30 01:22ID:???
あれ? 5.7って出てたんだ。。。
0512なにがいけないんだろう?。01/11/30 01:41ID:2jA/moy4
>>510 ありがとうございます。 でも駄目みたいです。

ID:yokohama
Pass:monako

http://www15.big.or.jp/~s-w-/


AuthUserFile /public/pub/home/s-w-/html/cgi-bin/.htpasswd
AuthGroupFile /dev/null
AuthName member
AuthType Basic
<Limit POST GET PUT>
require user yokohama
</Limit>
0513??01/11/30 01:49ID:???
pub? の?はどこ行ったの?ここに何か入るんじゃないの?
上に書いてるけどtelnetで入ってpwdしてOSの絶対パス書かなきゃダメだって
AuthUserFile はおまじないじゃ無いよ、ISPなんて出鱈目書いてたりするし・・
0514472 01/11/30 01:56ID:???
あわわ! 何で成りすますんじゃー(゚Д゚)!
473は僕じゃないよ
_gunzip さん有難う御座いました。ベンチまで取って頂いて。。
Pオプション、知りませんでした 汗;
PERL勉強しないとダメだなぁ。。。
手元のGCCですんなり使えましたけど、何か変な感じです ^^;
取り合えずマクロにする事でちょっぴり安心な結果になりました
今perldoc精読中ですー 感謝!
0515つかれた・・01/11/30 01:58ID:???
>>513
ども、pwdは以下なんですけどね。

big15:/public/pub/home/s-w-/html/cgi-bin$ pwd
/public/pub/home/s-w-/html/cgi-bin
051651301/11/30 02:21ID:???
何か情報小出しで良く分かんないよ(このスレに持ってくる事自体謎だし。)
パス合ってるなら後はファイル出来てる事とパミ確認する位かな
後、LIMITGETとか要らない、テストは最小構成で、これ基本
AuthName,AuthType,AuthUserFile,require valid-user
その辺がOKならサポ板とかで聞いてみれば、Perlは全く関係無いから言わなくてよし
051751301/11/30 02:27ID:???
ああ、これ本物のURIなんだね (^ ^;
401だからファイル見つからないか中身がおかしいっぽい(2.3のUAで確認したよ)
これで作れる?(未テスト)
#!/usr/local/bin/perl
print "Content-type: text/html\n\n<html><body>";
if($ENV{'QUERY_STRING'} eq ''){
$0=~s#.*/([^/]+)$#$1#g;
print "<h2>パスワードを入力して下さい。</h2>";
print "<form method=get action=$0><input type=text name=id size=10></form>";
} elsif($ENV{'QUERY_STRING'} =~ s/^id=//){
open(FH,">./.htpasswd")||print "ファイルを作成出来ません!";
my @salt = (a..z,A..Z);
$salt .= $salt[int(rand(52))] for(0..1);
$crypted = crypt($ENV{'QUERY_STRING'},$salt);
print FH "$ENV{'QUERY_STRING'}:$crypted\n";
close FH;
print "$ENV{'QUERY_STRING'}を暗号化しました! -> $crypted";
}
0518名無しさん@お腹いっぱい。01/11/30 03:12ID:JcBWdq/s
BBSNoteで、絵の投稿者の環境を非表示にするにはどの設定をいじれば良いのでしょうか。
0519名無しさん@お腹いっぱい。 01/11/30 03:20ID:???
おまえの脳みそ (^∀^)ハハハ
0520名無しさん@お腹いっぱい。01/11/30 08:31ID:???
>(^∀^)ハハハ
煽りのはずなんだけど、なんか可愛い。
0521名無しさん@お腹いっぱい。01/11/30 08:47ID:???
>>518
スレ違い。
0522名無しさん@お腹いっぱい。01/11/30 09:09ID:???
>>499
なるほど、何で高々現在時刻得る為にこんなに小難しくて解りにくいやり方なんだろう(それも決まりきった様に)
と前から疑問に思っていた。しかも使ってるのはまんまasctimeの返り値だし・・・
クッキーなんて、何故かやたら冗長だし、エスケープもしてないし、
たまにやってると思ったらordとか変な関数使ってて、又ややこしいし
よっぽど強力に推奨してる本でも有るのかと。
0523名無しさん@お腹いっぱい。01/11/30 09:53ID:???
クッキーって、セッションIDだけとかみたいに単純なの以外は全部CGIモジュールにやらせてるから、自分でコード書いたことない・・・
エスケープのやりかたなんてしらんけど、知っといたほうがいいのかな(藁
0524名無しさん@お腹いっぱい。01/11/30 10:20ID:???
おかしな質問ですみません。
プロバのHPスペースでCGIが使えるので使っているのですが、これがPerl4だったりします。
Perl5との違いなどでここは気を付けた方がいいというところはありますか?
とりあえず、「$a ||= 1;」とかやるとエラーが出ました。
いろいろと出来ないことが多いみたいで・・・。

もし、Perl4とPerl5の違いを説明したHPなどがあれば紹介していただけるとたすかります。
・・・できれば日本語で。

よろしくお願いします。
0525名無しさん@お腹いっぱい。01/11/30 11:59ID:???
取り合えずPerldeltaを良く嫁
気をつけるのは動かないのよりfor(0..1000)みたいな爆弾構文だ
0526名無しさん@お腹いっぱい。01/11/30 13:05ID:???
とりあえず、最新版入れろと苦情メールを入れとけ。
0527名無しさん@お腹いっぱい。01/11/30 17:44ID:???
とりあえず、ルート奪って最新版インストールした挙句、説教しとけ。
052852401/11/30 18:37ID:???
>525
検索してみましたけどちょっとよくわかりませんでした。
もう少し勉強してみます。

for(1..1000)はまずいんですか?
繰り返しが多過ぎるのが理由でしょうか?

>526-527
それはさすがに(w;
サーバー会社のでなくプロバイダについてきたスペースなので・・・。
0529名無しさん@お腹いっぱい。01/11/30 19:07ID:???
>>528
for(1..1000)は1,2,3,4,...,999,1000っていうリストを
あらかじめメモリ上に確保してからループに入るから。
1000程度なら爆弾でもないけど。

プロバイダにバージョンアップの要請しちゃダメなんてことはない。
受け入れられるか知らないけど。
つーか、乗り換えるのが吉。
0530名無しさん@お腹グー01/11/30 19:10ID:Edtr0BUz
>>481
猿より毛が3本多ければ勿論可能。ppm.batの中身を
解析しろ。難しくないぞ。
お前の能力で出来ないなら、3本毛が少ないんだな、
あきらめろ。 コキ過ぎで逝くなよ。
053152401/11/30 19:14ID:???
>529
地方ローカルのプロバで接続量は安いのでなかなか乗り換えられなくて。
予算ができたらレンタルサーバーを借りようと思っています。
これ以上はスレ違いなのでここまでで。

for(1..1000)はやはりループが多いのが問題なのですね。
さすがに1000ものループはないですが今後も気をつけるようにします。
ありがとうございました。
0532名無しさん@お腹いっぱい。01/11/30 19:20ID:???
>>531
だからループの数じゃなくて「リストをあらかじめメモリ上に確保」
が問題なんだってば。
for($i=1; $i<=1000; $i++)なら何の問題もなし。
053352401/11/30 19:23ID:???
>532
すみません、ちょっとよくわからなくなってしまいました。
for(1 .. 1000)とやると1000の変数の分の領域をメモリ上に確保してしまう
というような意味でしょうか?
だとしたら、$#list = 1000;みたいなのも同様にまずいですよね?
0534名無しさん@お腹いっぱい。01/11/30 19:43ID:???
> for(1 .. 1000)とやると1000の変数の分の領域をメモリ上に確保してしまう
> というような意味でしょうか?
御意。

> だとしたら、$#list = 1000;みたいなのも同様にまずいですよね?
領域の確保は発生するだろうね。
1000個の値が必要な配列があるのなら使うだろうし、
なければそんなことやる意味がないとおもうけど・・・
053552401/11/30 20:20ID:???
>534
なるほど。
親切な説明ありがとうございます。
今更ですが$#list=1000;みたいなバカなものを作っていた自分がいました。
早速修正しようと思います。
ありがとうございました。
0536  01/11/30 23:04ID:???
>>517(513)
アクセス成功できました。
ありがとうございます。
0537名無しさん@お腹いっぱい。01/12/01 04:31ID:kdHffvH4
お邪魔します。
http://pc.2ch.net/test/read.cgi/hp/1005035374/824-
上のスレで}の後の;を省略している人がいるのですが、
これって文法的に正しいのでしょうか。
テストしてみたら実際動いたのですが…。
0538名無しさん@お腹いっぱい。01/12/01 06:20ID:???
>>537
問題ありません。Perlにおいては正しい書き方です。
ただ、俺だったらそのスレの824のようなケースでは省きませんね。
俺が省くのは、{ print $_ } のように、{ } が短い一行になる場合です。
これは単純に美的感覚(?)の問題ですけど。
0539名無しさん@お腹いっぱい。01/12/01 08:34ID:???
その辺何でも有りなのがperlのいい所且つ困った所なの :-)
インデントとか基本的な所は当然としても
俺みたいに色んな言語をちょろ齧りしてる様な奴のperlのソースはとても汚い
記述に一貫性が無いのに、それでも通ってしまうんだよ。
逆に〜〜言語風の書き方を一貫出来る人のコードは読みやすい
だから俺は、例えばCっぽい記述を強制するStrict_cみたいなのが欲しいんだ(w
0540名無しさん@お腹いっぱい。01/12/01 21:36ID:Bx/rf8oU
$m = rand(100);

1度のスクリプト動作で一回しか乱数を使用しない場合は
乱数の初期化ってしなくてもいいんでしょうか。
0541名無しさん@お腹いっぱい。01/12/01 23:59ID:???
perl5ならそれで良い、4ならsrand要、詳しくはperldeltaで
0542名無しさん@お腹いっぱい。01/12/02 00:03ID:???
perldeltaってなんですか?
専門書?
0543名無しさん@お腹いっぱい。01/12/02 00:53ID:???
http://www.google.com/search?q=perl+perldelta&hl=ja&lr=lang_ja
0544名無しさん@お腹いっぱい。01/12/02 01:01ID:???
解らん関数有ったら検索しろよ、お前朝鮮人やろ?
0545名無しさん@お腹いっぱい。01/12/02 08:29ID:???
最後だけ余計だな。
0546名無しさん@お腹いっぱい。01/12/02 08:30ID:???
>>544
氏ね
0547名無しさん@お腹いっぱい。01/12/02 08:46ID:???
今、かちゅ〜しゃで朝の巡回したら
他の巡回スレも煽り荒らしばかりで嫌になった…。

朝くらい気持ちよく巡回させてくれよ…。
0548名無しさん@お腹いっぱい。01/12/02 17:47ID:6F2mG0wF
ふたつの絶対パスA、Bを与えて、Aから見たBの相対パスを得る。
そんなモジュールを探しているのですが、標準モジュールで
ありますでしょうか?
0549名無しさん@お腹いっぱい。 01/12/02 18:25ID:???
File::findなんかはどう?
0550名無しさん@お腹いっぱい。01/12/02 18:26ID:???
$a = "/home/user/public_html/test/bbs.cgi";
$b = "/home/user/public_html/php/index.html";

print relative_path($a, $b);

sub relative_path {
my @file = @_;
my @dirA = split /\//, $file[0];
my @dirB = split /\//, $file[1];
while (1) {
last if ($dirA[0] ne $dirB[0]);
shift @dirA;
shift @dirB;
}
my $dir = "../" x $#dirA;
return $dir . (join "/", @dirB);
}
0551名無しさん@お腹いっぱい。01/12/02 22:48ID:SEeFh0J9
すいません、perl初めてやってるんですけど、
web上でcgiにアクセスするとダウンロードのダイアログが出てきて
しまいます。これは何がいけないのでしょうか。
0552名無しさん@お腹いっぱい。01/12/02 22:53ID:???
>551
サーバーによるけど、パーミッションが悪いか、スクリプトにエラーがあるか。
そのスクリプトが動くかどうかは、ローカルでチェックしているよね?
0553名無しさん@お腹いっぱい。01/12/02 23:21ID:???
あるいは CGI として動作するように設定されていないか。
0554名無しさん@お腹いっぱい。01/12/02 23:38ID:???
アマゾンでプログラミングPerlが品切れになっています。
アマゾン逝ってよしですか?
0555名無しさん@お腹いっぱい。01/12/03 00:00ID:???
別にんなことで逝ってよしとは思わん。
一般から見れば、切らさんように随時チェックせないかん程の本じゃないし、
一二週間待っときゃ入荷されるだろ。
0556 01/12/03 05:56ID:???
12週間も待ってられん。
なんてあげ足とりの漏れは逝ってよしですか?
0557名無しさん@お腹いっぱい。01/12/03 09:14ID:???
別にんなことで逝ってよしとは思わん。
ただ 84日ぐらい待っとけ・・・とはさすがに思わん。
0558名無しさん@お腹いっぱい。01/12/03 13:42ID:???
phpでいう、count($a)
みたいな配列の要素の数を数える関数てありますでしょうか。
0559縞栗鼠(シマリス)の親方01/12/03 13:46ID:v6vCrfM9
中央高等学院の従業員「西部」が女子トイレに闖入し
汚物入れを物色して女子生徒の使用済みタンポン・ナプキン等を
個人的に収集しているというのは事実。
中央高等学院 http://chs-f.com/index.html 中央高等学院福岡校
http://www.chuo-school.ac/
0560名無しさん@お腹いっぱい。01/12/03 13:58ID:???
>>558

$count = $#hogehoge + 1; # @hogehoge の 要素数
0561javaむぎ茶01/12/03 14:19ID:???
>>558
$count = @hogehoge;
$count = scalar(@hogehoge);
0562名無しさん@お腹いっぱい。01/12/03 16:01ID:???
htmにフォームを作ってそこからcgiに飛ばしてフォームの結果を表示して
いるのですが、htmlのフォームにチェック項目が幾つかあって
全部にチェックが入っていないとcgiで変数が空かどうか調べて
$hogeがチェック入っていません。
というふうにしてcgiでメッセージを出しています。
それで当然htmlに戻るんですが、ブラウザで戻ると
前にチェックした項目が全部チェックがはずれてしまっています。
項目がたくさんあるのでこれを回避したいのですが。
仕様でinputにcheckedを入れていないのがいけないのですが。
0563名無しさん@お腹いっぱい。01/12/03 16:07ID:???
>>562

こっちだべ。

CGIだけど、なんか質問ある?part4
http://pc.2ch.net/test/read.cgi/php/1000804655/
0564>>56201/12/03 16:18ID:???
ブラウザの「戻る」なら普通リセットされないでしょ??

HTMLの段階でJavaScriptかなんか使って
フォーム入力のチェックしたら?

# 厳密にCGIの質問じゃないね
0565名無しさん@お腹いっぱい。01/12/03 17:39ID:???
わざわざ no-cache とかやって リセットされると嘆いてるに 1票
0566初めてのスクリプト01/12/03 18:15ID:4NX8xqaD
#!/usr/bin/perl -w

$check_word = $ARGV[0];
$check_file = $ARGV[1];

open(IN, "$check_file");
while ($line = <IN>) {

if ($line =~ $check_word) {
if ($line =~ /(\d+\.*\d+)\s*Mbps/ )
{
$ct++ ;
$speed += $1;
}

elsif ($line =~ /(\d+\.*\d+)\s*[kK]bps/ )
{
$ct++ ;
$tyousei = $1 / 1000;
$speed += $tyousei;
}

}
}
$avr = $speed / $ct;

print "$ct 回 \n";
print "$avr Mbps\n";
056756601/12/03 18:16ID:4NX8xqaD
改行数が多すぎるといわれたので、2に分けました。

スピードテストのサイトのデータを perlで処理するスクリプトを作ってみました。何とか動いているので、感激しているのですが、brush upするために諸先輩のご意見をお聞かせください。

測定回数と平均スピードを表示するものです。
測定サイトは、 http://speed.on.arena.ne.jp/  http://www.broadland.jp/  の2カ所。データは、2種類です。
TARGET home.att.ne.jp
DATE Sun Dec 2 06:25:37 UTC+0900 2001
TIME 4.627 sec
YOU 5432 Kbps

測定サイト http://speed.on.arena.ne.jp/ v2.0.7
測定時刻 2001/12/02 10:54:22
回線種類/線路長 ADSL/-km
キャリア/プロバイダ ACCA 8Mbps/so-net
ホスト1 WebArena(NTTPC) 4.52Mbps(2244kB,4.0秒)
ホスト2 at-link(C&W IDC) 5.3Mbps(2244kB,3.5秒)
推定最大スループット 5.3Mbps(665kB/s)
コメント ACCA 8Mbpsとしてはかなり速いです!おめでとうございます。(1/5)

これで、このように表示されます。
26 回
3.61423076923077 Mbps

課題 小数点以下を第2位くらい、あるいは、任意の桁で表示する。
独学の初心者です。よろしくお願いします。
0568名無しさん@お腹いっぱい。01/12/03 19:17ID:???
取り合えずここを見てみれ
http://www.din.or.jp/~ohzaki/perl.htm
056956601/12/03 20:01ID:???
>568
ありがとうございます。
とりあえず、sprintf を使うことにしました。

後は、時間帯別、日別の平均スピードに挑戦します。
0570名無しさん@お腹いっぱい。01/12/03 20:08ID:???
良く読んでないが、それだけの目的なら
printf(".2f",$avr);
本持って無いなら
`printf` `format` `perl` 辺りで検索してくれ
0571名無しさん@お腹いっぱい。01/12/03 20:09ID:???
あ遅かった (死
0572バックスペースとのマッチ01/12/03 20:37ID:sBy63GlF
当方かなりPerl初心者です。よろしくお願いします。

コマンドライン入出力ファイルから、特定コマンドの出力を取り出そうとしています。
(幸いな事に、ファイルにマルチバイト文字は含まれていません。)
コマンド入力の際に、「ミスタッチ→バックスペースで修正」と打たれていた場合に対応しようとし、以下の様に考えました。

1.バックスペースは直前の文字と相殺する。
2.バックスペースがある限り、1.を繰り返す。

以上を実現するため、以下の様なコードを書きました。(デバッグ用のprintも併せて記します。)

while($line =~ m/.[\b]/) {$line =~ s/.[\b]//; print "さば$lineさば\n";}
print "いわし$lineいわし\n";

以下、疑問点です。
疑問点1:
バックスペースが入っている行をこの処理に入れても、さばprintが出ません。
正規表現は合っているでしょうか?(「らくだ本」を見ても、私の頭ではいまいち解りませんでした。)

疑問点2:
いわしprintですが、バックスペースは単なるホワイトスペースとして出力されている様です。
(print出力をファイルへリダイレクトしてみましたが、明らかにホワイトスペースでした。)
私はやろうとしている事が果たしてできるのでしょうか??

蛇足ですが、当方の作業環境のperlバージョンは

This is perl, version 5.005_03 built for sun4-solaris

Copyright 1987-1999, Larry Wall

でした。
0573名無しさん@お腹いっぱい。 01/12/03 22:46ID:???
全く意味が分からんが、その「コマンドライン入出力ファイル」なる
物にはユーザのキーログがそのまま入ってるって訳?
だったらansiの表でも見ながらパーサ書くのが王道じゃ無いの?
→←とか押されたらどうするんでしょ
057457201/12/03 23:14ID:+1gWR50Y
>>573様
舌足らずな説明、すいませんです。
「コマンドライン入出力ファイル」とは、

telnet somehost | tee /tmp/log.txt

と打った時の/tmp/log.txt内容をご想像下さい。
バックスペース入力がファイルに残るのは見ているのですが、
カーソルキー入力がファイルに残り、それが入った文字列が有効なコマンド名となるのは試していませんです・・・すいません・・・
例えば、
p ^[[A s -a
みたいな感じになるのでしょうか?(でもこの場合、有効な入力にはならない気が・・・)
0575名無しさん@お腹いっぱい。01/12/03 23:28ID:wka85RYE
レンタルHTMLって何よ?
ソースがおかしいって言ったら突然CGIを語るなら
LINUX勉強しろって言われてPHP、SQLの勉強してはどうだろうか?
と罵倒され、レンタルHTMLって知らないのかと言われたんだが…
0576名無しさん@お腹いっぱい。01/12/03 23:45ID:???
ここ人少ないのか(;´Д`)
他のところで聞いてくるYO!
057754801/12/04 20:46ID:???
>>550
なるなる、やはりこの方法がいいようですね。
あの後いろいろやってみて同じ方法にたどり着きました。
0578名無しさん@お腹いっぱい。01/12/05 01:13ID:9ARk5xac
test
0579名無しさん@お腹いっぱい。01/12/05 17:18ID:rTg+WPeh
Windows環境の人、Perlスクリプトはどこに保管してます?
c:\perlの中? c:\scrとかかな? c:\pl?

スタンダードってありますか?
0580名無しさん@お腹いっぱい。01/12/05 17:58ID:my6OaWYN
起動用のバッチファイルといっしょにc:\home\bin に放り込んでいる
0581名無しさん@お腹いっぱい。01/12/05 19:34ID:???
大体書き捨て以外は用途別に別けて溜め込んでるD:\comp_lang\perl\〜〜って感じ
#何でスクリーンセーバだろ? とかちょっと悩んだ w
0582名無しさん@お腹いっぱい。01/12/05 19:34ID:Lvfs0GBW
すごーく基本的なことをきいているとおもうのですが、
foreach文で、

foreach(@line){
($_使って処理)
}

というようなことをしたいのですが、たとえば、配列@lineのが30個の要素
を持っていたとして、11番目から20番目まで処理したいとかいうとき
foreach文でそんなことは可能なのでしょうか?それとももっといい方法
があるのでしょうか?
私の少ない知識では、

for (my $i = 10; $i < 20; $i++){
($line[$i]を使って処理)
}

という幼稚な方法しか思いつかないのですが...。
ご教授お願いいたします。
0583_gunzip01/12/05 19:44ID:???
foreach (10 .. 19) {
    print $line[$_], "\n";
}
などなど。
0584名無しさん@お腹いっぱい。01/12/05 20:12ID:???
>582
foreach(@line[10 .. 19]){
処理
}
0585名無しさん@お腹いっぱい。01/12/05 23:42ID:???
>>579
うちは c:\home\pl
058657201/12/06 02:54ID:1atXp7qL
すいませんでした。
私の質問に回答をいただけないのは、きっと私の質問そのものに欠陥があったためなのでしょう。
という訳で、消えますが、その前に基本的な質問を発したくございます。

今回の様な極めて初歩的な質問(バックスペースにマッチするサンプルでOKです。)は、どのスレッドで質問すればいいのでしょう?
今回の様な、WebProgramingとは関係ない質問は、どの板で質問すればいいのでしょう?
やっぱり私は、シェル操作そのものに関して無知と思われます(カーソル移動で入力コマンド文字列を変更する技に関して、あまりよく知りません。)が、根本的に知識不足ですね。
書けば書く程鬱・・・Perlはおろか、コマンドラインでキーを打つのすら禁じられた気分であります・・・だって私は、愚者ですから・・・
失礼しました・・・
■ このスレッドは過去ログ倉庫に格納されています