【Perl 】初心者コーナーPart8
■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。
01/10/24 14:11ID:???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を見よう。
0467名無しさん@お腹いっぱい。
01/11/28 15:22ID:???0469名無しさん@お腹いっぱい。
01/11/28 17:08ID:???このスレで質問します。
携帯専用のサイトをしているのですが、PCから
アクセスできないようにするのにはどうしたらよいのでしょうか?
0470名無しさん@お腹いっぱい。
01/11/28 17:16ID:???せめてこの辺で聞きなさい。
CGIだけど、なんか質問ある?part4
http://pc.2ch.net/test/read.cgi/php/1000804655/
0471名無しさん@お腹いっぱい。
01/11/28 17:25ID:???>>1の
| CGIの質問はこちら【CGIだけど、なんか質問ある?part4】
| http://ebi.2ch.net/test/read.cgi/php/1000804655/l50
を読みなさい。
0472名無しさん@お腹いっぱい。
01/11/28 20:49ID:eYEjqDt2ちょっと凄いループの中とかで、マクロ使うような局面で
inlineに出来ないですよね
0473名無しさん@お腹いっぱい。
01/11/29 03:19ID:???0474名無しさん@お腹いっぱい。
01/11/29 04:46ID:???うんこ野郎には教えられないと思うんですが。
呼びかけるならうんこ野郎以外に向けて呼びかけないと。
0475_gunzip
01/11/29 05:19ID:???どうしても気になるならC/C++で書くよろし
#!/usr/bin/perl -P
#define SWAP(a,b) (a,b) = (b,a)
use strict;
use Benchmark;
our $a = 0, $b = 1;
sub swap($$)
{
@_[0, 1] = @_[1, 0];
}
timethese(1000000, {
"inline" => sub { ($a, $b) = ($b, $a) },
"using macro" => sub { SWAP($a, $b) },
"function call" => sub { swap($a, $b) }
});
0476_gunzip
01/11/29 05:23ID:???Benchmark: timing 1000000 iterations of function call, inline, using macro...
function call: 11 wallclock secs (10.72 usr + 0.00 sys = 10.72 CPU) @ 93283.58/s
inline: 3 wallclock secs ( 3.69 usr + 0.00 sys = 3.69 CPU) @ 271076.17/s
using macro: 4 wallclock secs ( 3.72 usr + 0.00 sys = 3.72 CPU) @ 269179.00/s
0477Perl上級者
01/11/29 07:15ID:???0478名無しさん@お腹いっぱい。
01/11/29 10:45ID:???0480名無しさん@お腹いっぱい。
01/11/29 15:57ID:???@picfile = sort grep {/.jpg/} readdir(DIR);
closedir(DIR);
とした後でJPEG画像表示ってどうすればいいんでしょう?
foreach ( @picfile )
{
print $_,"<br>\n";
}
だとファイル名を表示しますよね?
0481名無しさん@お腹いっぱい。
01/11/29 16:09ID:/dTb+5XA複数台にインストールしなきゃいけなくって、
アーカイブをダウンロードしておいて、それを使ってインストール
したいのですが、猿のようにppm installしていたので
ダウンロードの仕方やファイルの指定方法がわかりません
0482むぎ茶?
01/11/29 16:56ID:Fa8sgCiktime_t が一周して同じ値になるとユニークじゃなくなるよ:D
0483むぎ茶!
01/11/29 16:58ID:Fa8sgCikprint qq|<img src="$_"><br>\n";
はどう?
0484名無しさん@お腹いっぱい。
01/11/29 17:43ID:???なるほろ!ありがとです
0485名無しさん@お腹いっぱい。
01/11/29 18:48ID:???普通にクッキーは食ってくれるんですがブラウザ閉じると死にます。
sub set_cookie{
$c_name = "kunni"; $c_mail = "kumanko";
$name = $FORM{'name'};
$n ='10*60*60*24';
($secg,$ming,$hourg,$mdayg,$mong,$yearg,$wdayg,$ydayg) = localtime(time+$n);
$ww = (Sun,Mon,Tue,Wed,Thu,Fri,Sat)[$wday];
$mong1 = (Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec)[$mong];
$expires = sprintf("%s,%02d-%s-%02d %02d:%02d:%02d GMT",$wwg,$mdayg,$mong1,$yearg,$hourg,$ming,$secg);
print "set-cookie:$c_name=$name;expires=$expires;\n";
}
0486名無しさん@お腹いっぱい。
01/11/29 19:08ID:???どうせKENTのパクるなら全部コピペすれば?
Sun, 01-Jan-2000 12:12:12 GMT
0487名無しさん@お腹いっぱい。
01/11/29 19:19ID:???書き込めたから前の質問はいいわ。
じゃあパクッてないクッキーの記述の条件をおせーてくれ。
無論ソースで実例記述はいらんよ。
こことこことここが違えばパクって無いオリジナルであるって条件。
スカラ変えればいいってもんでもないだろうし、一つ頼むわ。
0488名無しさん@お腹いっぱい。
01/11/29 19:26ID:???0489名無しさん@お腹いっぱい。
01/11/29 19:30ID:???時間取得から寄せ集めprintなんてどこでもやってると思うが。。。
どーでもいいが$C_mail=kumanko;はといあえず書き込んでないから
意味無いね。
0490名無しさん@お腹いっぱい。
01/11/29 19:33ID:???これは何を意味してるんだ?一回しか出てこんけど。
0491名無しさん@お腹いっぱい。
01/11/29 19:33ID:???どう言う意味?$ydayg ぷ
0492名無しさん@お腹いっぱい。
01/11/29 19:36ID:???分かりにくい変数名にしないといかんのだろ。
0493名無しさん@お腹いっぱい。
01/11/29 19:38ID:???0494486
01/11/29 19:40ID:???まあパクって無いってんならそうなんでしょう
>>時間取得から寄せ集めprintなんてどこでもやってると思うが。。。
んな事しなくても、gmtimeに投げてsplitすりゃ良いんで
普通はそうします(w
KENTとは言わんがどっかで拾ったコード使って、変数の中吐き出して
確認も出来ないなら、そのまま使えばよろしいかと・・・
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+>普通はそうします(w
ちょっと溜息。パクってるって言われるくらいそっちのが
メジャーだと思うからシャレきかせたつもりだが。。。
書き方あえて変えてんだから読み取ってネ。じゃ無駄な時間使って
煽ってくれ。バイバーイ低次元。
05003行で済むな 藁
01/11/29 19:56ID:???($wday,$month,$day,$time,$year) = split(/ /,$exptime);
print "$wday, $day-$month-$year $time GMT\n";
ほら、これで満足だろ? GPLだからソース公開しろよ 藁
0501名無しさん@お腹いっぱい。
01/11/29 19:58ID:???悲惨過ぎる・・・
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:???こんなん。
$cnt+= tr/\n// while read FILE, $_, 1024;
0506名無しさん@お腹いっぱい。
01/11/29 23:04ID:???これ役にたったよ、何も+1900とかしてシコシコ計算する事無いんだね
俺もKENT病だったようだ(´Д`;)
月をハッシュに入れて日本語表示も随分すっきりしました
# つくづく>485は悲惨だと思った
0507
01/11/30 00:27ID:JaJKMNFahttp://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
です。
このサイトを利用しているかたのアドバイスをいただけないでしょうか?
基本認証はperlとは関係ないよ。
.htpasswdは正確に記述してある?
AuthUserFileにはパスを正確に記述してある?
0509
01/11/30 01:08ID:JaJKMNFaAuthUserFile /public/pub?/home?/hoge/html/cgi-bin/.htpasswd
・・・
こういう感じ
「?」っているのかな。外すと駄目みたい。
Options -Indexes
とした場合、に同ディレクトリにあるファイルに直接アドレス入力すると、
見えてしまうのですが、これを見せない方法ってありますか?
0510名無しさん@お腹いっぱい。
01/11/30 01:14ID:???その辺の説明サイトみながら作れ。
その/public/pub〜〜 って所はpwdって打って出てきたのを入れろ
0511名無しさん@お腹いっぱい。
01/11/30 01:22ID:???0512なにがいけないんだろう?。
01/11/30 01:41ID:2jA/moy4ID: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:???上に書いてるけどtelnetで入ってpwdしてOSの絶対パス書かなきゃダメだって
AuthUserFile はおまじないじゃ無いよ、ISPなんて出鱈目書いてたりするし・・
0514472
01/11/30 01:56ID:???473は僕じゃないよ
_gunzip さん有難う御座いました。ベンチまで取って頂いて。。
Pオプション、知りませんでした 汗;
PERL勉強しないとダメだなぁ。。。
手元のGCCですんなり使えましたけど、何か変な感じです ^^;
取り合えずマクロにする事でちょっぴり安心な結果になりました
今perldoc精読中ですー 感謝!
0515つかれた・・
01/11/30 01:58ID:???ども、pwdは以下なんですけどね。
big15:/public/pub/home/s-w-/html/cgi-bin$ pwd
/public/pub/home/s-w-/html/cgi-bin
0516513
01/11/30 02:21ID:???パス合ってるなら後はファイル出来てる事とパミ確認する位かな
後、LIMITGETとか要らない、テストは最小構成で、これ基本
AuthName,AuthType,AuthUserFile,require valid-user
その辺がOKならサポ板とかで聞いてみれば、Perlは全く関係無いから言わなくてよし
0517513
01/11/30 02:27ID:???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/s0519名無しさん@お腹いっぱい。
01/11/30 03:20ID:???0520名無しさん@お腹いっぱい。
01/11/30 08:31ID:???煽りのはずなんだけど、なんか可愛い。
0521名無しさん@お腹いっぱい。
01/11/30 08:47ID:???スレ違い。
0522名無しさん@お腹いっぱい。
01/11/30 09:09ID:???なるほど、何で高々現在時刻得る為にこんなに小難しくて解りにくいやり方なんだろう(それも決まりきった様に)
と前から疑問に思っていた。しかも使ってるのはまんまasctimeの返り値だし・・・
クッキーなんて、何故かやたら冗長だし、エスケープもしてないし、
たまにやってると思ったらordとか変な関数使ってて、又ややこしいし
よっぽど強力に推奨してる本でも有るのかと。
0523名無しさん@お腹いっぱい。
01/11/30 09:53ID:???エスケープのやりかたなんてしらんけど、知っといたほうがいいのかな(藁
0524名無しさん@お腹いっぱい。
01/11/30 10:20ID:???プロバのHPスペースでCGIが使えるので使っているのですが、これがPerl4だったりします。
Perl5との違いなどでここは気を付けた方がいいというところはありますか?
とりあえず、「$a ||= 1;」とかやるとエラーが出ました。
いろいろと出来ないことが多いみたいで・・・。
もし、Perl4とPerl5の違いを説明したHPなどがあれば紹介していただけるとたすかります。
・・・できれば日本語で。
よろしくお願いします。
0525名無しさん@お腹いっぱい。
01/11/30 11:59ID:???気をつけるのは動かないのよりfor(0..1000)みたいな爆弾構文だ
0526名無しさん@お腹いっぱい。
01/11/30 13:05ID:???0527名無しさん@お腹いっぱい。
01/11/30 17:44ID:???0528524
01/11/30 18:37ID:???検索してみましたけどちょっとよくわかりませんでした。
もう少し勉強してみます。
for(1..1000)はまずいんですか?
繰り返しが多過ぎるのが理由でしょうか?
>526-527
それはさすがに(w;
サーバー会社のでなくプロバイダについてきたスペースなので・・・。
0529名無しさん@お腹いっぱい。
01/11/30 19:07ID:???for(1..1000)は1,2,3,4,...,999,1000っていうリストを
あらかじめメモリ上に確保してからループに入るから。
1000程度なら爆弾でもないけど。
プロバイダにバージョンアップの要請しちゃダメなんてことはない。
受け入れられるか知らないけど。
つーか、乗り換えるのが吉。
0530名無しさん@お腹グー
01/11/30 19:10ID:Edtr0BUz猿より毛が3本多ければ勿論可能。ppm.batの中身を
解析しろ。難しくないぞ。
お前の能力で出来ないなら、3本毛が少ないんだな、
あきらめろ。 コキ過ぎで逝くなよ。
0531524
01/11/30 19:14ID:???地方ローカルのプロバで接続量は安いのでなかなか乗り換えられなくて。
予算ができたらレンタルサーバーを借りようと思っています。
これ以上はスレ違いなのでここまでで。
for(1..1000)はやはりループが多いのが問題なのですね。
さすがに1000ものループはないですが今後も気をつけるようにします。
ありがとうございました。
0532名無しさん@お腹いっぱい。
01/11/30 19:20ID:???だからループの数じゃなくて「リストをあらかじめメモリ上に確保」
が問題なんだってば。
for($i=1; $i<=1000; $i++)なら何の問題もなし。
0533524
01/11/30 19:23ID:???すみません、ちょっとよくわからなくなってしまいました。
for(1 .. 1000)とやると1000の変数の分の領域をメモリ上に確保してしまう
というような意味でしょうか?
だとしたら、$#list = 1000;みたいなのも同様にまずいですよね?
0534名無しさん@お腹いっぱい。
01/11/30 19:43ID:???> というような意味でしょうか?
御意。
> だとしたら、$#list = 1000;みたいなのも同様にまずいですよね?
領域の確保は発生するだろうね。
1000個の値が必要な配列があるのなら使うだろうし、
なければそんなことやる意味がないとおもうけど・・・
0535524
01/11/30 20:20ID:???なるほど。
親切な説明ありがとうございます。
今更ですが$#list=1000;みたいなバカなものを作っていた自分がいました。
早速修正しようと思います。
ありがとうございました。
アクセス成功できました。
ありがとうございます。
0537名無しさん@お腹いっぱい。
01/12/01 04:31ID:kdHffvH4http://pc.2ch.net/test/read.cgi/hp/1005035374/824-
上のスレで}の後の;を省略している人がいるのですが、
これって文法的に正しいのでしょうか。
テストしてみたら実際動いたのですが…。
0538名無しさん@お腹いっぱい。
01/12/01 06:20ID:???問題ありません。Perlにおいては正しい書き方です。
ただ、俺だったらそのスレの824のようなケースでは省きませんね。
俺が省くのは、{ print $_ } のように、{ } が短い一行になる場合です。
これは単純に美的感覚(?)の問題ですけど。
0539名無しさん@お腹いっぱい。
01/12/01 08:34ID:???インデントとか基本的な所は当然としても
俺みたいに色んな言語をちょろ齧りしてる様な奴のperlのソースはとても汚い
記述に一貫性が無いのに、それでも通ってしまうんだよ。
逆に〜〜言語風の書き方を一貫出来る人のコードは読みやすい
だから俺は、例えばCっぽい記述を強制するStrict_cみたいなのが欲しいんだ(w
0540名無しさん@お腹いっぱい。
01/12/01 21:36ID:Bx/rf8oU1度のスクリプト動作で一回しか乱数を使用しない場合は
乱数の初期化ってしなくてもいいんでしょうか。
0541名無しさん@お腹いっぱい。
01/12/01 23:59ID:???0542名無しさん@お腹いっぱい。
01/12/02 00:03ID:???専門書?
0543名無しさん@お腹いっぱい。
01/12/02 00:53ID:???0544名無しさん@お腹いっぱい。
01/12/02 01:01ID:???0545名無しさん@お腹いっぱい。
01/12/02 08:29ID:???0546名無しさん@お腹いっぱい。
01/12/02 08:30ID:???氏ね
0547名無しさん@お腹いっぱい。
01/12/02 08:46ID:???他の巡回スレも煽り荒らしばかりで嫌になった…。
朝くらい気持ちよく巡回させてくれよ…。
0548名無しさん@お腹いっぱい。
01/12/02 17:47ID:6F2mG0wFそんなモジュールを探しているのですが、標準モジュールで
ありますでしょうか?
0549名無しさん@お腹いっぱい。
01/12/02 18:25ID:???0550名無しさん@お腹いっぱい。
01/12/02 18:26ID:???$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:SEeFh0J9web上でcgiにアクセスするとダウンロードのダイアログが出てきて
しまいます。これは何がいけないのでしょうか。
0552名無しさん@お腹いっぱい。
01/12/02 22:53ID:???サーバーによるけど、パーミッションが悪いか、スクリプトにエラーがあるか。
そのスクリプトが動くかどうかは、ローカルでチェックしているよね?
0553名無しさん@お腹いっぱい。
01/12/02 23:21ID:???0554名無しさん@お腹いっぱい。
01/12/02 23:38ID:???アマゾン逝ってよしですか?
0555名無しさん@お腹いっぱい。
01/12/03 00:00ID:???一般から見れば、切らさんように随時チェックせないかん程の本じゃないし、
一二週間待っときゃ入荷されるだろ。
0557名無しさん@お腹いっぱい。
01/12/03 09:14ID:???ただ 84日ぐらい待っとけ・・・とはさすがに思わん。
0558名無しさん@お腹いっぱい。
01/12/03 13:42ID:???みたいな配列の要素の数を数える関数てありますでしょうか。
0559縞栗鼠(シマリス)の親方
01/12/03 13:46ID:v6vCrfM9汚物入れを物色して女子生徒の使用済みタンポン・ナプキン等を
個人的に収集しているというのは事実。
中央高等学院 http://chs-f.com/index.html 中央高等学院福岡校
http://www.chuo-school.ac/
0560名無しさん@お腹いっぱい。
01/12/03 13:58ID:???$count = $#hogehoge + 1; # @hogehoge の 要素数
0562名無しさん@お腹いっぱい。
01/12/03 16:01ID:???いるのですが、htmlのフォームにチェック項目が幾つかあって
全部にチェックが入っていないとcgiで変数が空かどうか調べて
$hogeがチェック入っていません。
というふうにしてcgiでメッセージを出しています。
それで当然htmlに戻るんですが、ブラウザで戻ると
前にチェックした項目が全部チェックがはずれてしまっています。
項目がたくさんあるのでこれを回避したいのですが。
仕様でinputにcheckedを入れていないのがいけないのですが。
0563名無しさん@お腹いっぱい。
01/12/03 16:07ID:???こっちだべ。
CGIだけど、なんか質問ある?part4
http://pc.2ch.net/test/read.cgi/php/1000804655/
0564>>562
01/12/03 16:18ID:???HTMLの段階でJavaScriptかなんか使って
フォーム入力のチェックしたら?
# 厳密にCGIの質問じゃないね
0565名無しさん@お腹いっぱい。
01/12/03 17:39ID:???■ このスレッドは過去ログ倉庫に格納されています