• ベストアンサー

パールについて

CGIでの環境変数を使ってホスト名を取得するときの (($host eq "") || ($host eq $addr)))の文のなかで使われている ||の意味が分かりません。とても初歩的な質問のような気がするのですが教えて頂けませんか。言語はパールです。

  • Perl
  • 回答数2
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • Suzi
  • ベストアンサー率38% (130/334)
回答No.2

|| は、「または」です。 if(a || b){・・・・  とした場合、a か b なら、という意味になります。  or と同じですが、他の比較演算子(||とか)と一緒になると、その読み取りの優先順位が変ってきます。  同じ「または」でも || の方が優先順位が上で(同様に && と andは同じ「かつ」)、 例えば、 if(a and b || c){・・・と、 if(a && b or c){・・・では、  if(a and b || c){ は、b か c であれば、が先に来て、if(a && b or c){ は、a があって、が先に来ると思いました。  分かる人はこの方が見やすいみたいですが、私は ()でくくってしまいます。  例えば、まず a であって、その次にbかcなら、if(a && ( b || c) ){ とか。  ANo.1さんがおっしゃっているように、これらは「演算子」または「比較演算子」で検索するといろいろ出てきます。

s-movie
質問者

お礼

いいページを教えて頂いてありがとうございます。精進します。

その他の回答 (1)

回答No.1
s-movie
質問者

お礼

いいページを教えて頂いてありがとうございます。精進します。

関連するQ&A

  • IP/ホスト連続投稿チェック機能が上手く行かない。

    なんでだろ?? ###+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ## SUB >>> ホスト取得処理 ###+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ sub get_HostAgent { $Host = $ENV{'REMOTE_HOST'}; $Addr = $ENV{'REMOTE_ADDR'}; if ($Host eq '') { $Host = $Addr; } if ($Host eq $Addr) { $Host = gethostbyaddr(pack('C4',split(/\./,$Host)),2) || $Addr; } $H_A = "$Host"; } ホスト取得ルーチンにある変数で、 いろんな掲示板の中のP/ホスト連続投稿チェック機能だけ抜き出して、 もう何十個も試したけれど、上手くいきません。 カスタマイズしてる会員掲示板に、 IP/ホスト連続投稿チェック機能を付けたいのですが上手くいきません。 二重投稿チェックはあるのですが、、 ↓↓↓ #--二重投稿チェック--# if ($r1 eq "$name" && $r4 eq "$street<>$title" && $r5 eq "$comment") { &lock2; &error("二重投稿は禁止です"); } より極めるために、以下を利用したいのです。。 ↓↓↓ #--IP/ホスト連続投稿チェック--# if ($Addr = $ENV{'REMOTE_ADDR'} && $^T - $time < 120) { &lock2; &error("連続投稿はできません。<BR>時間をおいてから書き込みして下さい");} 宜しくお願い致します。 どこがおかしいのかサッパリです。 なんとか機能を追加できるようにお願いしますろ

    • 締切済み
    • CGI
  • PerlでIPアドレスを取得する方法

    Perl5.6 or 5.8を使っております。 環境変数からIPの取得をするのは、CGIで動いている前提?ですが、 CGIでなくてperlスクリプトが単体で動作した場合に他の例えばサーバーのアドレスを知るにはどのようにしたらよいのでしょうか? 自アドレスはgethostbyaddrで取得できます。 REMOTE_ADDRの値を取得したいです。

    • ベストアンサー
    • Perl
  • CGIにてソフトバンクがPCとして認識されます。

    掲示板のCGIなのですが、ソフトバンクではPC画面へ飛ばされてしまいます。下記の部分あたりではないかと思うのですが、書き直しで解決できるのでしょうか?このCGIを使いたいので、お願い致します。 #▼ホスト名・UA取得 $HOST = $ENV{'REMOTE_HOST'}; $ADDR = $ENV{'REMOTE_ADDR'}; $UA = $ENV{'HTTP_USER_AGENT'}; $SN = $ENV{'HTTP_X_UP_SUBNO'}; if ($UA =~ /^DoCoMo\/\d/) { $AGEN = "i-mode"; }elsif ($UA =~ /^Vodafone\/\d/) { $AGEN = "Vodafone"; }elsif (($UA =~ 'UP.B') && ($SN ne "")){ $AGEN = "AU"; }else { $AGEN="PC";} if ($UA =~ /Mozilla\/|MSIE|Netscape|Opera|Lynx|AOL|Gecko/) {$AGEN="PC";} if ($HOST eq '') { $HOST = $ADDR; } if ($HOST eq $ADDR) { $HOST = gethostbyaddr(pack('C4',split(/\./,$HOST)),2) || $ADDR; }

    • 締切済み
    • CGI
  • PerlからPHPに移植したアクセス制限

    下記は、CGIファイルから持ってきたスクリプトをPHPに変換してみたものです。 エラーが出るの出ます-> Parse error: syntax error, unexpected '/', expecting ')' in /home/users/1/raindrop.jp-5247423/web/tsukushinbo/bbs/bbs_header.php on line 32 どう修正すれば教えていただきたいです。 <?php #----------------# # ホスト名取得 # #----------------# function get_host(){ $host = $_SERVER{'REMOTE_HOST'}; $addr = $_SERVER{'REMOTE_ADDR'}; if($gethostbyaddr){ if ($host === "" || $host === "$addr") { $host === gethostbyaddr(pack("C4", split(/\./, $addr)), 2); $host === gethostbyaddr(pack($addr)); } } if($host === "") { $host = $addr; } } ?>

    • ベストアンサー
    • PHP
  • 【 REMOTE_HOSTの値の取得方法について 】

    既製のCGIを設置するのがイッパイイッパイの 初心者ですm(__)m REMOTE_HOSTの値を取得して表示させたいのですが 当方レンタル中のサーバーの初期設定では取得できず 下記の如くの手順で取得するように表示してありましたが どうにも理解できず困っております。 下記の「Perl内」とは何処の事を指しているのか アドバイスを頂きたくお願い申し上げます。 ****以下、該当サーバーの説明文引用***** 【 REMOTE_HOSTの値の取得方法について 】 レンタルサーバーの処理速度を優先して、初期状態ではIPアドレスからDNSの参照をしないように設定している為、REMOTE_HOSTの値を取得したい場合はPerl内で下記の記述をして下さい。 $addr = $ENV{'REMOTE_ADDR'}; $host = gethostbyaddr(pack('C4',split(/\./,$addr)),2) || $addr;

    • ベストアンサー
    • Perl
  • Perlを使ったアクセス制限方法

    CGIのページにアクセス制限を掛けたいと思い 検索エンジンを使い色々探しまして下記のアクセス制限方法を見つけました。 http://easycgi.xrea.jp/perltips/acclimit.htm を参照して CGIの最初(#!/usr/bin/perl の次の行)に下記スクリプトを埋め込みました。 sub check { @hosts = ('hoge.ne.jp','hoge.co.jp'); $host = gethostbyaddr(pack("C4", split(/\./, $ENV{'REMOTE_ADDR'})), 2) || $ENV{'REMOTE_ADDR'}; foreach $i (@hosts) { if ($host =~ /$i/) { print "アクセスが許可されていません。\n"; exit; } } } リモートホストでアクセス制限を行いたいのですが 上記の方法を試しても、hoge.ne.jpとhoge.co.jpからアクセス出来てしまいました。 htaccessを使わずにCGIページへアクセス制限を掛ける方法はないでしょうか? 何かアドバイス頂けると助かります。

  • IPアドレス等について

    IPアドレス等の基本的なことがわからなくなっているのですが、 プロバイダに加入するという事は、 プロバイダのサーバとLANで接続されるという事なのでしょうか? 自分のマシンにはローカルIPアドレスが基本的には自動割振りされているのですか? それから、カテゴリーが違う質問かも知れませんが、 CGIの環境変数のREMOTE_HOSTやREMOTE_ADDRとは CGIプログラムを実行した人のプロバイダのホスト名やIPアドレスを言っているのでしょうか? よろしくお願いします。

  • perl言語について

    いままで、Visual C++製品を使用してC言語を覚えてきました。 cgiを作成したいとおもい、perlを覚えようとしています。 不満、不安があるのですが、 Visualな画面で変数に色をつけてみたり、 自動インデントしてくれたり、 デバッガがあったり、、、 PerlのIDEはありませんか? 初心者にメモ帳はつらいです。 後、Perl言語に変数すべてに$がついているはみにくくていやです。型がなくて不安です。 それから、print "Hello";のprintは、どうして&print ではないのですか? 後、書籍は買ったほうがよろしいでしょうか? くだらない内容かもしれませんがお答えいただけると助かります。

    • ベストアンサー
    • Perl
  • 接続元の環境を調べるCGIを求めています。

    接続元の環境を調べるCGIを求めています。 現在利用中のものが、REMOTE_HOST を利用してホスト情報を取得するように設定されているのですが、REMOTE_HOST を利用したい場合は、apache 側にて HostnameLookups を On にしておく必要があるとの事です。 しかしながら、現在利用中のサーバでは HostnameLookups は Off となっておりました。 HostnameLookups を On にすると、アクセスがある度に名前解決を行い、ホスト情報を取得しようとするため、サーバに負荷がかかってしまいますので、あまりお勧めできませんとの事でした。 その為、HostnameLookups が無効になっている状況でホスト情報を取得したい場合、gethostbyaddr 関数を利用るるのが良いと伺いました。 こちらを利用して以下のような接続元環境を調べたいのですが・・。 your HOST = your ADDR = 既存のCGI当で結構ですので教えて頂ければ幸いです。 宜しくお願い致します。

    • 締切済み
    • CGI
  • perl言語でのURL取得

    perl言語にてCGIを書いてます。 皆様のお知恵を借りれればと思い、質問させていただきます。 CGIで表示されたページのURL(クエリを含む)を変数にしたいと思っています。 CGI.pmではクエリを含めることができずに困ってしまいました。 URI.pmで合成するのが無難でしょうか?

    • ベストアンサー
    • CGI

専門家に質問してみよう