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

Perl 初心者コーナー Part21

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん03/03/18 18:47ID:Dujz7IUF
いらっしゃーい、Perlのコーディングで困ってる人のスレです。

【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。

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

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


CGIだけど、なんか質問ある? Part 9
http://pc.2ch.net/test/read.cgi/php/1041530204/
参考書籍の話題は、【Perl,CGI】参考書籍 第三版
http://pc.2ch.net/test/read.cgi/php/1030209573/
その他の雑多な話題は、【CGIに依存しないPerlの話題一般/Part2】
http://pc.2ch.net/test/read.cgi/php/1030548610/
スクリプトの改造依頼は、【 スクリプト改造工房 PART 6 】
http://pc2.2ch.net/test/read.cgi/php/1047806915/

過去ログやお勧めサイトは >>2-10
0446nobodyさん03/04/02 15:37ID:???
>>445
掲示板に書き込もうとした人に無理矢理ipconfigを実行させるのか?
0447nobodyさん03/04/02 15:39ID:???
そんなことができるなら、とっくにみんなやっていると思うけど。
0448 03/04/02 15:39ID:sWPLndkw
>>444
IPだと再ダイアルアップしたらだめだし、クッキーもその都度消されちゃったら
だめなんでMACアドレスならいいかなと。それにルーターまででも桔梗いいん
じゃないかと・・・
044944603/04/02 15:39ID:???
掲示板じゃなくて投票か。どうでもいいけど
0450nobodyさん03/04/02 15:43ID:???
>>448
だから、てめーんとこのルータまでだって。
ルータ製品を変えない限り何万回でも何億回でも
同じMACアドレスしかつかまえられないでしょ。
そんなクッキーよりIPより無用なものがよかったら
NetPacket::ARP使いなさいってこった。
0451nobodyさん03/04/02 15:45ID:???
それにipconfigをクライアントで実行させた値を取ってこれたら、
果てしなくガクブル系セキュリティホールだな。
しかも、OLEなんて全然関係ないし。
0452nobodyさん03/04/02 18:04ID:4v5aHOPP
外部に作成したHTMLファイルから読み込んで
<!--here-->
みたいなコメントの部分をCGIで置き換えて出力する部分を作成しています(Perl)。

この、HTMLファイルを、CGIのディレクトリと違うディレクトリにいれたんですが、
これだと、HTMLが画像のリンクなどを含んでいた場合、困ったことになります。
HTMLがCGIから出力された時に、相対パスで入っていると、画像が表示されません。

ホームページの編集ソフトなどで作成したHTMLを、指定フォルダにアップする形にしたいので、
すべての画像パスを絶対パスにするとかそういう解決策は無しで、何かいい方法はないでしょうか?

一般的な解決策などがあるのでしょうか?
0453nobodyさん03/04/02 18:09ID:???
>>452
まったく Perl と関係ねー
0454nobodyさん03/04/02 18:12ID:???
君みたいな人はお金で買ったほうが早いよ
0455nobodyさん03/04/02 18:21ID:???
> HTMLがCGIから出力された時に、相対パスで入っていると、画像が表示されません。

その相対パスの指定が間違っているだけではありませんか。
結果的に正しい相対パスになるように、書いておくしかないのではないでしょうか。
0456nobodyさん03/04/02 19:13ID:???
正規表現で自動で置き換えるようにするとかさぁ

なんで<!--here-->は置き換えられてIMGタグは置き換えられないのかと・・・ry
0457nobodyさん03/04/02 20:21ID:???
$iptext = "ip.txt";
##################################
$openimg = "svropen.gif";
$closeimg = "svrclose.gif";

open IN, "<$iptext" or die "ERROR:ipファイルが開けません!";
$ipdata = <IN>;
close IN;

if ($ipdata == "close") {
$dispimg = $closeimg;
&dispimage;
} else {
$dispimg = $openimg;
&dispimage;
}

sub dispimage{
print "Content-type: image/gif\n\n";
open IMG, "$dispimg" or die "ERROR:imgファイルが開けません!";
binmode IMG;
binmode STDOUT;
while (<IMG>){
print STDOUT $_;
}
close IMG;
}
__END__

これのopenimgとcloseimg両方を文字で表したいのですがどうすればいいですか?
0458nobodyさん03/04/02 20:31ID:???
説明下手が多いよな、手助けしたくても理解できんよ。
0459nobodyさん03/04/02 20:40ID:???
>>458
ハゲドゥー
046045703/04/02 20:43ID:???
#!/usr/bin/perl

##############ファイル設定#################
$iptext = "ip.txt";
$open = "あ";
$close = "い";
###########################################

if ($ipdata == "close") {
print "$open\n";
}
else {
print "$close\n";
}

これでは表示されないのかなぁ?
0461nobodyさん03/04/02 21:04ID:???
何を言ってるのかやりたいのか、さっぱりわからん??? 
0462nobodyさん03/04/02 21:08ID:???
なんで

open IN, "<$iptext" or die "ERROR:ipファイルが開けません!";
$ipdata = <IN>;
close IN;

を消してんだよ。
046345703/04/02 21:10ID:???
あれ〜〜〜。。
これさ、imgタグで表示させるから、文字にしても意味ないか、、、
0464nobodyさん03/04/02 21:15ID:???
独り言は脳内でやってくれや
0465nobodyさん03/04/02 21:19ID:???
聞く前に一番最初に気づけ。
046645703/04/02 22:19ID:???
重ね重ねすいませんが、
今やろうとしているのは、

まずip.txtを読みにいって、IPがあれば、「公開」、空白だと「非公開」
(ip.txtの更新はNoDNSというフリーソフトでやってます)
というふうにして、HTMLに表示するCGIを作りたいのですが、どうでしょうか?
0467nobodyさん03/04/02 22:31ID:???
>>466
うるさい
046845703/04/02 22:38ID:yhPO3ktu
#/usr/bin/perl
$ex=0;
open(FILE,"ip.txt");
while(<FILE>){
if(/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\/){
$ex++;
}
}
close(FILE);
if($ex){
&settion;
}else{
&unsettion;
}
sub settion
{
print "content-type: text/html\n\n";
print "<html><head><title>公開</title></head>\n";
print "<body><h1>公開</h1></body>\n";
print "</html>\n";
exit;
}
sub unsettion
{
print "content-type: text/html\n\n";
print "<html><head><title>非公開</title></head>\n";
print "<body><h1>非公開</h1></body>\n";
print "</html>\n";
exit;
}
046945703/04/02 22:51ID:???
>>468
わざわざこんなに書いていただいたのに申し訳ありませぬが、
あらかじめいろいろ書いているindex.htmlに付け加える形にしたいのですが、、、
なんどもすいません
0470nobodyさん03/04/02 23:01ID:yhPO3ktu
SSIを使でよびだすのはだめですか?
047145703/04/02 23:03ID:???
>>470
CGIがいいです、はい。
注文多くてごめんなさい。
あ、でも、使いそうなので教えてくれますか?
0472nobodyさん03/04/02 23:09ID:yhPO3ktu

SSIでやるには、読み込みたい部分に<!--#exec cgi="よみこむCGIファイル" -->
でいいとおもいます。

CGIでは・・・やりかたがいまいちおもいつきません。index.htmlのフレームを
わければなんとかなりそうですが・・・
047345703/04/02 23:19ID:???
>>472
そうですかぁ。。。
付け加えるのなら、画像にしてIMGタグにするしかないんですかね
0474nobodyさん03/04/02 23:19ID:yhPO3ktu
付け加えるって追加indexに追加書き込みするってことですか?
047545703/04/02 23:24ID:???
>>474
そういうことです。
0476nobodyさん03/04/02 23:35ID:yhPO3ktu
#/usr/bin/perl
$ex=0;
open(FILE,"ip.txt");
while(<FILE>){
if(/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/){
$ex++;
}
}
close(FILE);
open(FILE2,"+>index.html");
while(<FILE2>){
if(s/<\/body>(.*)<\/html>/\1/ig){
print FILE2 "$_";
}else{
print FILE2 "$_";
}
}
close(FILE2);
if($ex){
&settion;
}else{
&unsettion;
}
0477つづき03/04/02 23:36ID:yhPO3ktu
sub settion
{
open(FILE3,">>index.html");
print "<h1>公開</h1></body>\n";
print "</html>\n";
close(FILE3);
exit;
}
sub unsettion
{
open(FILE3,">>index.html");
print "<h1>非公開</h1></body>\n";
print "</html>\n";
close(FILE3);
exit;
}
0478nobodyさん03/04/02 23:46ID:???
普通はSSIだよな
0479名無しさんパーフェクト03/04/02 23:50ID:RgSUli0E
indexを読み込んだときにそのプログラムを読み込むのではもう遅いのでは?
それならまた違うhtmlを編集して最後にそちらに飛ばした方が
0480名無しさんパーフェクト03/04/02 23:51ID:RgSUli0E
あげてしまった吊ってくる
0481名無しさんパーフェクト03/04/02 23:53ID:???
鬱・・・
048245703/04/02 23:56ID:???
すいません。ほんとに迷惑かけて。SSIで行くことにしました。。

自宅鯖は<!--#exec cgi="よみこむCGIファイル" -->です。
ってして、あとどうすればいいですか?
CGIファイルはどれにすればいいんですか?
ほんと何も知らないですいません。。
0483nobodyさん03/04/02 23:57ID:yhPO3ktu
これでだめならSSIかframeで分割して読み込んでください。
0484nobodyさん03/04/03 00:06ID:os6gOz9a
>>468
のファイル名をserchip.cgiだとして
それをSSIでindex.htmlに組み込むとすると
組み込みたい場所に
<!--#exec cgi="serchip.cgi"-->
てなかんじでいいとおもいます。
048545703/04/03 00:20ID:???
できないなぁ。トクトクはSSIOKなはずなのに、、、
0486nobodyさん03/04/03 00:40ID:???
>>485
何をどうやってできないのか、はっきり言え。
そうでなければただの独り言だ。独り言を公開の場に垂れ流すな。
048745703/04/03 00:49ID:???
>>486

#!/usr/bin/perl

$ex=0;
open(FILE,"ip.txt");
while(<FILE>){
if(/close/){
$ex++;
}
}
close(FILE);
if($ex){
&settion;
}else{
&unsettion;
}
sub settion
{
print "閉鎖中\n";
exit;
}
sub unsettion
{
print "公開中\n";
exit;
}

これでSSI使ったらできました。
>>468の
(/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/)
が違ってるとしかおもえないんですが、、どうでしょう?
0488nobodyさん03/04/03 01:00ID:???
>>487
ソースも読めない奴がいじろうとするな
048945703/04/03 01:03ID:???
>>488
コンテンツタイプとかのは、
自宅のAN Httpdだと筒抜けですが、トクトクだと、ちゃんとBODYだけ表示されます。。。
049045703/04/03 01:05ID:???
トクトクにあげているのはこれです。
#!/usr/bin/perl

$ex=0;
open(FILE,"ip.txt");
while(<FILE>){
if(/close/){
$ex++;
}
}
close(FILE);
if($ex){
&settion;
}else{
&unsettion;
}
sub settion
{
print "content-type: text/html\n\n";
print "閉鎖中\n";
exit;
}
sub unsettion
{
print "content-type: text/html\n\n";
print "公開中\n";
exit;
}
直接cgi実行するとちゃんと変わるんですが、SSIにするとうまくいきません。
自宅鯖は<!--#exec cgi="ip.cgi" -->です。って書いたのに、
自宅鯖はです。
になってしまいます。SSIの文まちがってますかね?
0491nobodyさん03/04/03 01:07ID:???
>476
百合親切だな
0492nobodyさん03/04/03 01:10ID:???
SSIの呼び出し方に決まりごとなかったか?
ちゃんと設定方法とか読んだのかよ、
つか漏れ的には if(/close/){ が非常に気になるわけだが・・・。
049345703/04/03 01:16ID:???
>>492
#!/usr/bin/perl
$ex=0;
open(FILE,"ip.txt");
while(<FILE>){
if(/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/){
$ex++;
}
}
close(FILE);
if($ex){
&settion;
}else{
&unsettion;
}
sub settion
{
print "content-type: text/html\n\n";
print "<html><head><title>公開</title></head>\n";
print "<body><h1>公開</h1></body>\n";
print "</html>\n";
exit;
}
sub unsettion
{
print "content-type: text/html\n\n";
print "<html><head><title>非公開</title></head>\n";
print "<body><h1>非公開</h1></body>\n";
print "</html>\n";
exit;
}
これで直接実行したらできました。あとは、SSIです。。。
049445703/04/03 01:25ID:???
トクトクでは、SSIを動作させるにはファイルの拡張子を .shtml にしなければいけません。
 .htaccess もトクトクでは動作しませんのでこれは変更不可能です。
 また、トップページは index.htm , index.html の形式しか許されていませんので、トップページにSSIを利用することはできません。
( ゚Д゚)ポカーン・・・・・
逝ってきまつ
0495nobodyさん03/04/03 01:26ID:???
>>493
そのコード自体が目的不明に見えるんだが
$ex++みたいにカウントアップして何か意味あるのか?
049645703/04/03 01:28ID:???
>>495
これはほかの方が教えてくれたやつです。。。
index.shtmlにしたらデキターヨ。。
みなさんスレよごしてごめんなさい。
0497nobodyさん03/04/03 01:33ID:???
>495
whileが最後まで回る所とかな。
0498nobodyさん03/04/03 01:33ID:???
>>490
「うまくいきません」の定義はなんだよ?
「自宅鯖はです。」って、HTMLソースレベルでみてそれ言ってるの?
SSIコケたら[an error occurred while processing this directive]が出るだろ普通。

ソース見てみ。多分SSIの構文が丸裸かもしれんぞ。サーバが何かわからんけどよ。

あと、ちゃんとエラーを捕捉しろって。
リファクタリングしてやる。

#!/usr/bin/perl -w
use strict;
use CGI::Carp qw#fatalsToBrowser#;

my $ex = 0;
open(FILE, "ip.txt") || die $!;
while (<FILE>) {
if(/close/){
$ex++;
last;
}
}
close(FILE) || die $!;

print "content-type: text/html\n\n";
print $ex ? "閉鎖" : "公開";
print "中\n";

共通化できる所はまとめなさい。
049945703/04/03 01:44ID:???
>>498
すいません。トクトクでは、shtmlでないといけなかったみたいです。。。
でも、このCGI直すところいっぱいありますか?
0500nobodyさん03/04/03 01:44ID:???
そもそも目的がはっきりしてないんだよな。
>>466の「まずip.txtを読みにいって、IPがあれば、」って、
ファイルにはどれだけのデータがあるのか?
IPある無しの答えは1個なのか複数かもはっきりしてないし
0501nobodyさん03/04/03 01:46ID:???
txtのフォーマットもわからないしな
0502nobodyさん03/04/03 02:20ID:???
>434じゃないんですけど、
perl色々勉強してて、「->」につまづいて、もう全然わけわからなくて、
http://www.rfs.jp/sitebuilder/perl/04/06.html
↑ここが一番詳しいかなとおもうんですけど、ここ見ても意味不明で・・・
だんだんやる気なくしてたんですけど、ちょっと教えていただけませんか?

まず、「矢印演算子を使わなければならない理由」、
あるいは、別に使わなければならないわけでもないなら、
「矢印演算子を使うことでどのようなメリットがあるのか」を
できれば、例をだして、「こういう風なことをしたいときにこうする」
または、「こういう風にするときにこうした方がこういうメリットがある」
という感じで教えていただけないでしょうか?

次に
http://www.rfs.jp/sitebuilder/perl/04/06.html
こことかで出てくる、「無名の配列」「無名のハッシュ」・・・
の「無名」ってのはどういう状態を指してるんでしょうか?

あと、そんなことよりこのサイトで勉強しろよってのがあれば、
貼っていただけると自分で勉強してきます
0503nobodyさん03/04/03 03:19ID:???
無名の名ってのは、変数名のことじゃないかなぁ。

@arr = (1,2,3,4,5);

ってときは、arr っていう名前が、この配列についてる。
0504nobodyさん03/04/03 03:53ID:???
>>502
http://www.namazu.org/~tsuchiya/perl/info/perl-ja_20.html
どうしてもアローを使わなければならないケースは少ないだろう。
0505nobodyさん03/04/03 05:20ID:???
んーホント難しい・・・

>無名の名ってのは、変数名のことじゃないかなぁ。
そういうことだと思うんですけど、じゃあ、これが無名ってのは、どういう状態なんでしょう?
まだ、宣言されてない変数ってことなんでしょうかねぇ?

>どうしてもアローを使わなければならないケースは少ないだろう。
でも人のソースを解読したいときに激しく不便、ってかできないんです
教えていただいたurl・・・難しい。明日改めて勉強しに行ってきます
0506nobodyさん03/04/03 07:32ID:Nji/7HYX
>>505
無名配列、無名ハッシュってのは、多次元のそれらを作るときできる。
@ar=([baka, aho, manuke], 'kuso', 'manko');
ここで($ar[0], 'kuso', 'manko')は、arって名前の配列だな。
だけど(baka, aho, manuke)ってのは、名前のない配列や。
上のは、print $ar[2], "\n";で表示できるが、下のは、
print $ar[0][1], "\n";または、print $ar[0]->[1], "\n";だ。
ハッシュのときは、矢印演算子使うた方が分かりやすいからよく使われる。
0507nobodyさん03/04/03 07:52ID:Nji/7HYX
まだ分からんか。ハッシュの例だ。
%hash=('baka' => 'kuso', 'aho' => {'manuke' => 'manko', 'boke' => 'shikko'});
print $hash{'baka'}, "\n";
print $hash{'aho'}->{'manuke'}, "\n";
0508nobodyさん03/04/03 08:06ID:Nji/7HYX
まだか。まだ分からんのか。
(...)ってのはリスト構造だ。[...]ってのは配列だ。{...}ってのは
ハッシュだ。いいか?だから、
$ar=['baka', 'aho', 'bokenasu'];
$hash={'baka', 'kuso', 'aho', 'manko', 'bokenasu', 'shikko'};
って書くと直接無名配列、無名ハッシュができる。
$ar->[1]とか$hash->{'baka'}ってアクセスするっきゃ内。
0509nobodyさん03/04/03 08:09ID:Nji/7HYX
おい、分かったって言ってくれ。
もう出かけるぞ。
0510nobodyさん03/04/03 10:14ID:???
こういう無名ハッシュを考える。$hashには{ .. }のアドレスが入ってる。
$hash = {a => 1, b => {c => 3, d => 4};

$$hash{a}
これはちょっと格好悪いから、矢印を導入。
$hash->{a}

$$hash{b}->{d}
$hash->{b}->{d}
#{..}の間の矢印は省略できる。一気にデリファレンスする感じ。
$$hash{b}{d}
$hash->{b}{d}

無名ハッシュに対してスライスを使いたいとき、矢印は使えない。
@$hash{b}{'c', 'd'} # (3, 4)

普通のハッシュに戻す事もできる。
%hash = %$hash;

このとき、
$hash{b}->{d}は、さっきのルールが適用されて、
$hash{b}{d}でアクセスできる。
0511nobodyさん03/04/03 10:24ID:???
無名っていう物は、元の英語だと、Anonymousになってて、匿名って読み替えてもいい。

%hash = (a => 1, b => 2);
$hash = {a => 1, b => 2};
この2つの状態を比べると、データは同じでも、上の方は、%hashっていう名前が
付いているのに対して、下は、データのアドレスが$hashに入ってる。

つまり、1つの変数にメモリ上のデータが対応している状態を、普通の状態。
変数に対応していないデータの事を、無名だ。という。
0512nobodyさん03/04/03 10:28ID:???
この2つは、実際に持っている情報は同じでも、…

5行目を修正。。
0513nobodyさん03/04/03 10:31ID:???
矢印のまとめ。

$str = 'hoge';
$ref->{a}[0]->($str)->$str->$str($str->$str);
0514名無しさん@Meadow03/04/03 11:46ID:694fbPsK
>>510 - >>513
うざい
0515nobodyさん03/04/03 12:13ID:???
$this->[514]
はぁ?
051625103/04/03 12:22ID:???
ん〜アロー演算子ってのは二次元以上の配列を作るときに重宝するかなぁ
例えば、xが2yが3の領域の値を見たい時は
print $area[2]->[3];
あと、xyzの値を登録したい時は
$point[1]->[2]->[3] = 'fujiyama';
こんなふうに呼び出すとか・・・

んで、無名配列はリファレンスの概念を理解すると解り良いと思う
perlだと
配列は @ayaya0 =(1,2,3)
ハッシュは %ayaya1 = (a=>1,b=>2);

で表記出来るのだけど
リファレンスは
$ayaya2 =[1,2,3];
$ayaya3 ={a=>1,b=>2};

や、
$ayaya2 = \@ayaya0;
$ayaya3 = \%ayaya1;

051725103/04/03 12:22ID:???
になるわけだわね、配列やハッシュを一つの$ayayaみたいな変数で呼び出せるのがみそ。
$ayaya自体にはデータが格納されている位置情報が入ってる。
だから、データーが巨大でもその位置情報をわたすだけで済むので処理が高速化出来るとかいわれてる。(ソース次第だけね・・・)

んで、呼び出しは
$ayaya0[0]
$ayaya1{a}
ってなることはperl初心者でもわかると思うけど、 リファレンスを参照する場合は
$ayaya2->[0]
$ayaya3->{a}

となる。要は$ayayaだけでは必要とする要素をいままでのままでは書けないから->を使って記述しましょうということです。

オマケで、リファレンスを配列構造やハッシュに戻す時は
@ayaya0 = @{$ayaya2};
%ayaya1 = @{$ayaya3};

まぁ、ルールとしてはこうなんだけどアロー演算子自体が省略可能・・・
$hoe->{a}->[3] なら $hoe->{a}[3] とか

  でも
  $hoe{a}[3]はこの場合だとNG 何故なら %hoeの aというkeyを参照してしまう為
  $hoe{a}->[3] と解釈されてしまう・・・

気をつけなければならない所が多いため最初のうちは演算子等はしっかり付けとくほうがいいと思われ。
で、ココまではハードリファレンスの話、OO思考プログラムはまたルールが違うのでそれは別の話に・・・
051825103/04/03 12:36ID:???
%ayaya1 = %{$ayaya3};

だったすまね・・・
051945703/04/03 13:46ID:???
#!/usr/bin/perl

open INPUT, "<ip.txt";
if($_ = /\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/){
&START;
}
else($_ = /close/){
&CLOSE;
}
sub START
{
print "content-type: text/html\n\n";
print "<html><head><title>公開中</title></head>\n";
print "<body><a href=\"jump.cgi\">公開中</a></body>\n";
print "</html>\n";
}
sub CLOSE
{
print "content-type: text/html\n\n";
print "<html><head><title>閉鎖中</title></head>\n";
print "<body>閉鎖中</body>\n";
print "</html>\n";
}
これだと、Perlチェックでelseの部分がおかしいって出るので、ぜんぜんわからないので、
↓にかえました。
052045703/04/03 13:47ID:???
#!/usr/bin/perl

open INPUT, "<ip.txt";
if($_==/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/){
&START;
}
if($_!=/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/){
&CLOSE;
}
sub START
{
print "content-type: text/html\n\n";
print "<html><head><title>公開中</title></head>\n";
print "<body><a href=\"jump.cgi\">公開中</a></body>\n";
print "</html>\n";
}
sub CLOSE
{
print "content-type: text/html\n\n";
print "<html><head><title>閉鎖中</title></head>\n";
print "<body>閉鎖中</body>\n";
print "</html>\n";
}

こうしたんですけど、if文でifが複数あってelseがないっていうのは文法上だめですか?
052150203/04/03 13:52ID:???
みなさんすいませんでした。こんなに解答していただいてたのに
質問しっぱなしで寝まくってました。

で、今ざっと皆さんのレス読み返してるんですが、
>>517さんの一行目でなんとなくメリットがわかりました。
つまり、一旦新たな配列に値をコピーしてからサブルーチンなんかにわたすより、
値の入ってるアドレスを渡した方が、効率的ってことですね?

で、矢印演算子はそれらの代入や参照のときに使うものだと

今からもう一度皆さんに書いていただいたのを読み直してみます。
本当に有難うございます。多分理解できると思います
0522nobodyさん03/04/03 13:53ID:???
むちゃくちゃだな。
052345703/04/03 13:54ID:???
すいません。>>519>>520は脳内あぼーんしちゃってください。
出直します
0524nobodyさん03/04/03 13:57ID:???
>>520
いいかげんにしろや。同意が欲しいなら言ってやる。
それでオッケー!完璧です!
0525nobodyさん03/04/03 14:07ID:???
>>523
仕様をはっきりさせないから。
ip.txtって複数のアドレスが入ってるの?その場合はデリミタは?
それとも一つあるか、空のファイルのどちらか?
あるいはアドレス以外の何かも含まれているの?
0526nobodyさん03/04/03 14:45ID:???
まーSSIじゃなくてもindex.htmlに文字列埋め込むことは出来るわけで。

とか、まぜっかえしてみる。
0527nobodyさん03/04/03 15:29ID:???
>>526
それはナニ?
ハンドラいじるの?
0528nobodyさん03/04/03 15:33ID:kftTqlDW
http://www5b.biglobe.ne.jp/~ryo-kyo/osu.html

http://my.vector.co.jp/servlet/System.FileDownload/download/ftp/0/279026/pack/win95/game/table/pachinko/sikisai.lzh
0529nobodyさん03/04/03 15:56ID:jWA2mxiH
◆おすすめ◆
http://bbs.1oku.com/bbs/bbs.phtml?id=yasuko
0530nobodyさん03/04/03 16:06ID:???
そういえばCGIスクリプトを外部JavaScriptファイル(?)として読み込み、document.writeで書き出すテキストカウンターがあったな。
0531CGIでwww上のhtmlソースを取得03/04/03 16:08ID:507cBmxs
perlのCGIでこの動作を実現したいのですが

www.kasai.fm/perlHTTP/
www.antun.net/tips/cgi/perl.html
tohoho.wakusei.ne.jp/wwwperl2.htm#socket

上記のサイトの通りにCGIを設置しても動いてくれません。
どなたか幅広い環境で動くコードをお持ちでしたら
いただけないでしょうか?

これがどうしても出来なくてもう一週間も製作が止まった
ままになって参ってます、大変ずうずうしいお願いでは
ありますがどうか宜しくお願い致します。m(_ _;)m
0532nobodyさん03/04/03 16:10ID:+bF3BpEY
わかりません〜

0chのスクリプトをDLして掲示板を精製したけどその掲示板にアクセスするには何処にアクセスすればいいのですか〜?

(他のサイトではindex.htmlでアクセスしてたが
0533nobodyさん03/04/03 16:11ID:???
リンク先見ていないけど、多分コードの問題じゃなくて、サーバーの設定の問題だろ。
自分のコンピュータでやればうまくゆくと思う。
053453303/04/03 16:12ID:???
>>531へのレス。
0535nobodyさん03/04/03 16:12ID:???
>>532
スレ違い。
0536nobodyさん03/04/03 16:13ID:???
>>530
それそれ。
>>527
ということでhogehoge.cgiというファイルの出力で
print "Content-Type: text/javascript\n\n";
print "document.write(\"$hogehoge");\n";
とかしておいて、
HTMLファイルに
<script type="text/javascript" src="hogehoge.cgi"></script>
と書くと$hogehogeの内容が出てくる。
0537nobodyさん03/04/03 16:35ID:sUO6GuNu
次のような場合の動作は、1通りではないと言うことでしょうか。

${$hoge} = 'abc';

0538531 CGIでwww上のhtmlソースを取得03/04/03 16:37ID:507cBmxs
>>533

それが..
他人が作ったCGIはちゃんとこの動作を
してるのに自分のは動かないんです...

トクトクサーバのOSはLinuxなのでWINDOWSやUNIXサーバ用に
書かれたコードは動かないんでしょうか..
0539nobodyさん03/04/03 16:41ID:jWA2mxiH
http://yahooo.s2.x-beat.com/linkvp/linkvp.html
◆よろしく◆
0540nobodyさん03/04/03 16:44ID:???
>>538
socketが使えないからだろう
0541nobodyさん03/04/03 16:45ID:???
>>537
意味がわからん
何を聞きたいの?
054253703/04/03 16:54ID:sUO6GuNu
すみません。書き直します。

${$hoge} = 'abc';

このような代入の動作は、

$hogeの中身の文字列と同じ名前をもつスカラ変数に 'abc' という文字列を代入する。
$hogeの中身であるスカラへのリファレンスが指している変数に、'abc' という文字列を代入する。

のどちらかが、場合場合で行われる、ということでしょうか。


054345703/04/03 16:56ID:???
>>525
ip.txtには公開状態にしたいときに、1つのIPアドレスが書き込まれています。
閉鎖時は「close」という単語が書かれています。(空ファイルはなんか不安なもので)
それで、一から自分で書き直したのがこれです。
054445703/04/03 16:56ID:???
#!/usr/bin/perl
open(FILE, "ip.txt");
while (<FILE>) {
if (/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/){
&connection;
}else{
&unconnection;
}
}
close(FILE);
sub connection
{
print "content-type: text/html\n\n";
print "<html><head><title>公開</title></head>\n";
print "<body><h1>公開</h1></body>\n";
print "</html>\n";
exit;
}
sub unconnection
{
print "content-type: text/html\n\n";
print "<html><head><title>非公開</title></head>\n";
print "<body><h1>非公開</h1></body>\n";
print "</html>\n";
exit;
}
なんとなく理解できるんですが、whileの中にifを入れないとできないのがよくわかりません。
if(<FILE> =/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/)
とかだめでしょうか?whileは絶対いるのでしょうか?
0545531 CGIでwww上のhtmlソースを取得03/04/03 16:59ID:507cBmxs
>>540

いえ、socketは使えるんです。

http://www.vector.co.jp/soft/unix/net/se220625.html
これを設置したらちゃんと動きますから..
(HP一括ダウンロードCGIです)

このCGIのソースを参考にさせてもらおうとも
思ったのですがあまりに複雑なコードなので,,,
■ このスレッドは過去ログ倉庫に格納されています