• ベストアンサー

if ステートメントについて質問

今ifステートメントについて勉強してるのですが 自分が調べた感じではこのように書いてありました。 If condition Then [statements] [ElseIf condition-n Then [elseifstatements]] . . . [Else [elsestatements]] End If しかし、以前に作った掲示板のメイン処理のあたりを見てみると、↑のようでなく if ($mode eq "howto") { &howto; } elsif ($mode eq "find") { &find; } elsif ($mode eq "usr_del") { &usr_del; } ・ ・ ・ 見たいな感じです。これは今自分が勉強しているところと違うところですか?

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

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

  • ベストアンサー
  • mi-si
  • ベストアンサー率35% (200/567)
回答No.1

上はVBA、VBScriptもしくはVisual Basicのif構文の説明だと思います。 Perlのif文の説明ではないと思います。

参考URL:
http://www.edu.tuis.ac.jp/~susaki/perl/condition.html
kuroro966
質問者

お礼

そうですかー、ではVisual Basicについて調べてみようと思います。一応他の人の回答も聞きたいのでポイントはあとでにします。

その他の回答 (1)

  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.2

#1の方と全く同じです。 if ($mode eq "howto") { &howto; } elsif ($mode eq "find") { &find; } elsif ($mode eq "usr_del") { &usr_del; } ・ ・ ・ がperlのif文です。 ちなみに If condition Then [statements] [ElseIf condition-n Then [elseifstatements]] . . . [Else [elsestatements]] End If がperlのif文であるという情報はどこから入手されたのでしょうか?

kuroro966
質問者

お礼

こちらのサイトでしたがこれは違うんですか? http://tryasp.winscom.co.jp/document/vbscript/583.htm

関連するQ&A

  • IFステートメントの使い方 どちらでもないならば

    「出金も入金も0じゃないならば」としたい場合、どのようなifステートメントを作ればいいでしょう? Sub test() Dim 出金 As Currency Dim 入金 As Currency 出金 = 0 入金 = 0 '(1) If Not (出金 = 0) And Not (入金 = 0) Then MsgBox "出金0入金0ではありません" End If '(2) If (出金 = 0) And (入金 = 0) Then Else MsgBox "出金0入金0ではありません" End If End Sub (1)だとうまくいきません。 (2)のように Elseを使って対応するしかないのでしょうか? (2)でいけますが、今後の勉強の為にelseを使わずに、「どちらでもないならば」の方法を教えてください。

  • この意味を教えて下さい。

    よく、CGIを見ていると始めのほうにこのような行があるのですが、 これはどうゆう意味があるのでしょうか? if ($FORM{'mode'} eq 'view') { &view;exit; } elsif ($FORM{'mode'} eq 'delete') { &delete; } elsif ($FORM{'mode'} eq 'input') { &input; } また、「$FORM{'mode'} 」の意味も教えていただきたいのですが・・・。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • excelのifステートメントのテストで…

    御観覧ありがとうございます。 スパテクという本を買って、excelを勉強しようと、 サンプルを打ち込んでいて、何度かエラーになったりしましたが、 調べることや、入力ミスの確認で回避出来ていたのですが、 本通りに打っているのに、 「エラー438、オブジェクトは、このプロパティまたはメソッドをサポートしてません。」 と出ます。 エクセル2007です。入力したプロシージャは、 Option Explicit Dim nSample1_12 As Integer Sub Sample1_12() nSample1_12 = nSample1_12 + 1 ThisWorkbook.Worksheets("sheet1").Range("A1") = nSample1_12 End Sub Sub Sample1_13() Dim sA2 As String sA2 = ThisWorkbook.Worksheets("sheet1").Range("A2") If sA2 = "" Then ThisWorkbook.Worksheets("sheet1").Renge("A2") = "Sample1_13" ElseIf sA2 = "Sample1_13" Then ThisWorkbook.Worksheets("sheet1").Range("A2") = "基本の文法 ifステートメント" Else ThisWorkbook.Worksheets("sheet1").Range("A2") = "" End If End Sub このサンプル13を実行すると、A2にsample1_13と出るはずなそうなんですが…エラーになります。

  • Ifステートメントと条件式を用いた、マクロの記述方式について質問です。(その2)

    Ifステートメントと条件式を用いた、マクロの記述方式について質問です。(その2) 偏差値に対する評価を行う条件式を記述したいのですが。。。  評価基準-偏差値(下限値)  A-60  B-50  C-40  D-それ以下 評価については上述の条件基準に基づきます。 さらに繰り返しにより、セル2~27までの評価を行います。 そこで記述してみたのですが・・・↓ Sub 偏差値評価の出力() Dim x As Integer '偏差値(縦方向) Dim y As Integer '評価(横方向) '偏差値を取得する For x = 2 To 27 偏差値 = Cells(x, 3).Value '偏差値に対する評価を表示する For y = 2 To 27 If 偏差値 < 40 Then '偏差値が40未満 Cells(y, 4) = "D" ElseIf 偏差値 >= 40 Then '偏差値は40以上 Cells(y, 4) = "C" ElseIf 偏差値 >= 50 Then '偏差値は50以上 Cells(y, 4) = "B" ElseIf 偏差値 >= 60 Then '偏差値は60以上 Cells(y, 4) = "A" End If Next y Next x End Sub ↑これだとなぜか、全ての評価が「C」になってしまいます。 どこの記述が間違っているのでしょうか? どなたか教えて頂ければ助かります。

  • 該当項目表示についての追加質問

    csvデータの列に%で区切った項目があります。 例) 1行目:aaa%bbb%ccc 2行目:aaa&bbb%ddd 3行目:aaa%bbb csvデータ内にはaaaは3個だけですが下記コードで実行すると aaaが6個と計算されます。bbb、ccc、dddの個数は正確に計算されます。 $find = 0; for($d = 0 ; $d < @TEST ; ++$d) { (@ITEM) = split(/\,/, $TEST[$d]); @T = split(/\%/, @ITEMD[2]); #csvデータ内項目%区切り if($in{'item'} eq @T[0]) #@T[0]にaaaが入ります { if(($in{'item2'} eq "") or ($in{'item2'} eq "全て")) { @FIND[$find] = $TEST[$d]; $find++; } elsif($in{'item2'} eq @T[2]) { @FIND[$find] = $TEST[$d]; $find++; } if($in{'item2'} eq @T[1]) { if(($in{'item3'} eq "") or ($in{'item3'} eq "全て")) { @FIND[$find] = $TEST[$d]; $find++; } elsif($in{'item3'} eq @T[2]) { @FIND[$find] = $TEST[$d]; $find++;     }    }   } } ご教授お願いいたします。

    • ベストアンサー
    • Perl
  • IF文でページ振り分けがうまく出来てない。

    CGI勉強中です。 ある掲示板CGIを改造して会員のみに使用可にしようと考えています。パスワード自体は無事組み込むことが出来たのですが、1つ問題が出ました。 掲示板なので、過去ログがありますよね。その過去ログページを表示しようとするとまた認証ページに戻ってしまい、パスワードを再度入力→最新10件のページに戻ってしまいます。どうにかして、1度入ったらパスワードを入力しなくてもいいようにしたいのですが… 今のところこうなってます。 /////////////// if ($pass_mode == '1'){ ←もしパスを使用するだったら if ($F{'mode'} eq '') { &pass_mode} ←モード無しの場合、パス入力画面に移動 if ($F{'mode'} eq 'admin') { &admin} ←モードアドミニならsub adminへ } else{ if ($F{'mode'} eq '') { &main_form} ←メイン書き込みページへ else { &{$F{'mode'}} } } /////// となっています。 また、過去ページへの移動は「**.cgi?pg=10&sort=」という感じです。 この状態で、ページ移動時にパス入力ページに移動しないようにするにはどうしたらいいでしょうか?cookieを使う必要があったりしますか? 抜けてる情報・足りない情報があったら指摘してください。すぐ補足します。言語はperlで書いています。 よろしくお願いします。

    • ベストアンサー
    • CGI
  • リダイレクト転送について

    URL一つで使用端末の種類別のURLに飛ばしたいのですが CGIぼんさんのところのUser Agent を使った方法のを採用したいと考えています。 # User Agent によるキャリア判別 @user_agent = split(/\//,$ENV{'HTTP_USER_AGENT'}); if ($user_agent[0] eq 'ASTEL') { # ドットi 用の処理 } elsif ($user_agent[0] eq 'UP.Browser') { # EZweb 旧端末用の処理 } elsif ($user_agent[0] =~ /^KDDI/) { # EZweb WAP2.0 対応端末用の処理 } elsif ($user_agent[0] eq 'PDXGW') { # H" 用の処理 } elsif ($user_agent[0] eq 'DoCoMo') { # i-mode 用の処理 } elsif ($user_agent[0] eq 'J-PHONE') { # J-SKY 用の処理 } elsif ($user_agent[0] eq 'L-mode') { # L-mode 用の処理 } else { # それ以外 } 具体的にはどのような記述にしてどこにアップすればよいのでしょうか? 初心者なので御教授戴ければ幸いです

    • ベストアンサー
    • CGI
  • エラーがでてしまうのですが・・・

    文章比較がうく動かないんです。比較したい文字は小文字の欧文です。 $hakoにはアルファベットが入り、eq演算子で文字比較しています。 プログラムは下のような感じです。どうもo(オ-)あたりでエラーが出るんですが、どうして出るのかわかりません。 教えて頂きたいです。 また、ほかにもっと良い方法がある方は教えていただきたいです。環境はPerl 5.005_03でJPerlを使用してます。 if($hako eq a){$piti += 5;}      elsif($hako eq b){$piti += 6;}      elsif($hako eq c){$piti += 5;}      elsif($hako eq d){ $piti += 6;}      elsif($hako eq e){ $piti += 5;}      elsif($hako eq f){ $piti += 4;}      elsif($hako eq g){ $piti += 6;}      elsif($hako eq h){ $piti += 6;}      elsif($hako eq i){ $piti += 3;}      elsif($hako eq j){ $piti += 3;}      elsif($hako eq k){ $piti += 6;}      elsif($hako eq l){ $piti += 3;}      elsif($hako eq m){ $piti += 9;}      elsif($hako eq n){ $piti += 6;}      elsif($hako eq o){ $piti += 6;}      elsif($hako eq p){ $piti += 6;}      elsif($hako eq q){ $piti += 6;}      elsif($hako eq r){ $piti += 4;}      elsif($hako eq s){ $piti += 5;}      elsif($hako eq t){ $piti += 4;}      elsif($hako eq u){ $piti += 6;}      elsif($hako eq v){ $piti += 6;}      elsif($hako eq w){ $piti += 9;}      elsif($hako eq x){ $piti += 6;}      elsif($hako eq y){ $piti += 6;}      elsif($hako eq z){ $piti += 5;}

    • ベストアンサー
    • Perl
  • Excel2002のVBAでFor Nextのネストについての疑問

    For~NextステートメントもIf~Thenステートメントと同じように、ネストができると勉強しているテキストには書かれているのですが、どんな風に使ったらよいのかわかりません。(If Thenはわかります) 実際に使った例を教えていただけないでしょうか? よろしくお願いします。

  • php と perl

    perlで掲示板を作成する際はだいたい、 ####メインルーチン if($FORM['mode']="write";){&write;} elsif($FORM['mode']="usr_delete";){&usr_delete;} elsif($FORM['mode']="user_edit";){&usr_edit;} elsif($FORM['mode']="admin";){&admin;} … &html; exit; ####サブルーチン sub write { #書き込み処理 } sub usr_delete { #削除処理 } … といったように記述しますよね。 これをphpでも同じように、 //メインルーチン switch ($_POST['mode'])  case "write":   write();  case "delete":   delete();   … //サブルーチン function write(){…} function delete(){…} … と書くのは効率的ではないでしょうか。 効率とは"速さ"や"実装の仕方として適切ではないかどうか"、という意味です. 他サイトで配布されているphpのスクリプトに目を通すと、そう記述しているものがあまりみられませんでした。 もう1つ疑問なのですが、掲示板のスクリプトにクラスを使っているサイトが多々ありました。もちろんつかってないスクリプトなどもありましたが、掲示板作成をする際、クラスを使うメリットはあるのですか?

    • ベストアンサー
    • PHP

専門家に質問してみよう