• 締切済み

perlのif文で・・・・・

こんにちは。 お聞きしたいのですが、perlのif(A eq B)文で、crypt関数で暗号化した文字列の比較をしているのですが、画面に双方の変数をテスト表示をしてみて、AとBは一致しているにもかかわらず、このif文を飛ばしてしまいます。 暗号化した変数を使うのは初めてなんですが、何か可能性として考えられることはありますか? 自分でも考えられるチェックはしたつもりなんでが・・・

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

みんなの回答

  • ysk6406
  • ベストアンサー率40% (237/589)
回答No.2

No.1 の方も書かれているように、そこの部分のソースを提示していただかないと回答のしようがないですが、一応考えられるケースとして。 問題の if 文は   if (crypt($input, $encrypted) eq $encrypted) {     OK処理   } のようになっているかと思いますが、例えばこれに " " を付けた場合、スペースや制御文字などが紛れ込んでいませんか? つまり、例えば " $input" のようになっているとか… 制御文字が紛れ込んでいる場合は、普通にソースを表示させてもわからないので気づかないこともあると思います。

  • natural
  • ベストアンサー率37% (419/1115)
回答No.1

ソースの該当部分を記載して頂いた方が近道だと思いますよ。(^_^)

関連するQ&A

  • PerlのIF文について

    PerlのIF文の判断式につきまして、式全体を変数にしたいのですが、うまくできません。 初歩的な質問で大変恐縮ですが、他の言語を使っている人に聞いてもできるということなので、Perlでもできるような気がするのですが、うまく動かないので教えていただけませんでしょうか。 $ifbun="index(文字列, 検索したい単語) >=0"; if($ifbun){  処理 } とっても簡単な式なのですが、このままですと条件式を加味しない処理結果になっています。 $ifbunの中身をそのままIFの条件式に入れると問題なく条件式どおりの結果が得られるので、プログラムは間違っていないと思うのですが、変数に入れると、条件を加味していない結果が出てきます。 どなたかお分かりの方がいらっしゃいましたら教えてください。 どうぞよろしくお願いいたします。

    • ベストアンサー
    • Perl
  • if等判定文での定数、変数の記述順序

    perlスクリプトなどで、判定文を記述する際の考え方について、 重箱の隅的な質問になりますが、よろしくお願いします。 (1)if等判定文での定数、変数の記述順序 例えば、ある変数が0であることを判定するのに、結果は同じなのですが、 [] if($a == 0) [] if(0 == $a) のどちらで書く方が良い(理にかなっている)のでしょうか? (文字列でも同じでしょうか) [] if("$a" eq "") [] if("" eq "$a") (2)私はよく上限、下限の判定を行う際に、 [] 0 < x < 10 ということを表現する際に、 数学的に見映え(並び順)が同じになるよう、 [] if((0 < $x) && ($x < 10)){ と書くのですが、(1)のことと照らし合わせると、 [] if(($x > 0) && ($x < 10)){ と書いたり、 [] if((0 < $x) && (10 > $x)){ と書くほうが良いでしょうか。 (3)以上の(1)(2)のことは、標準的なC言語でも同じでしょうか? (4)Perl独特の書き方ですが、1行で済む実行文の場合、 [] 実行文 if(条件文); と書く方が、 [] if(条件文) 実行文; と書くよりも変換効率(?)か何かが良いと聞いたのですが、 どういう理由でどちらが良いとかありますか? この辺の違いはコンパイラが吸収してくれるので、どちらでも良いとか、 何か参考になる文献などもありましたら、ご教示よろしくお願いします。

    • ベストアンサー
    • Perl
  • if文で変数を指定する方法…

    素人なので、うまい方法が見つからず悩んでいます。 内容が変化する変数1があります。とりあえず、これを$hen1とします。これがある文字列だったら他の変数($hen2)を○○に変えるというのを実現したいのです。 で、 if($hen1 eq "1"){$hen2 = "文字列1"} else if($hen1 eq "2"){$hen2 = "文字列2"} ~~ という風にしたのですが、なぜかうまく動きません。 いったい何が間違っているのでしょう。もしくはif文で書くこと自体おかしいのでしょうか? 解決方法を教えてください。 お願いいたします。

    • ベストアンサー
    • CGI
  • Excel97で、If文をなんとかしたい

    IF文でなんとかなりそうなんですが、IF文を使った事がなくて。 A列   B列   C列    任意の位置のセルD 数式  文字列   数式  文字列 数式  文字列 数式  文字列 こんな表で、Bの文字列の値と、Dのセルの値が一致した時、Aの数式の値(数字)をCの列に表示させ、BとDの文字が一致しない時は、”エラー”を表示させたいんですが、どういう風にすればいいのでしょうか? IF文を使えばいいのでしょうか? どういう風に、数式を立てればいいのかわかりません。 どなたか詳しい方、教えていただけませんか?

  • if文を使わずに小数の符号を取れるか

    if文を使わずに、値が正なら1、0なら0、負なら-1を出力する方法はありますか? if文(とできれば掛け算)を使わずに、変数a(1か-1が入る)と変数b(小数が入る)の符号が違ったらカウントを増やすプログラムを作らないといけないのですが、 変数bを1,0,-1に分けることができれば楽になると考えたのですが、 符号を取り出す関数を見つけることができませんでした。 b/fabs(b)も考えたのですが、これだとb=0の場合に0/0となるためうまくいきません。

  • if条件の中に関数を使いたい

    お世話になります。 $a $bという項目があり等価かどうかを判断して何かを処理するとき if ($a==$b){} if ($a eq $b){} といった書き方になると思うのですが、a、bそれぞれの先頭の一文字のみを比較したい場合 if (substr($a,1,1) eq substr($b,1,1)){} と書きたいのですが、とおりません。PERLでは こういうことはできないのですか? よろしくお願いします。

    • ベストアンサー
    • Perl
  • Excel If関数について

    こんばんわ。 IF関数の使い方がわからずに困っています。 a b c d e f g 2 1 1 2 2 1 ?? abと一致している数字をgの欄に1か0の数字を入れたいんです。 もしabの数字と一致している場合は0 違っている場合は1 abと比較するのはcd,efの数字と比較をしたいんです。 aとc bとdみたいに1つずつ比較するIf文はできるのですが ab,cd ab,efと比較するIF文が作成できなく・・・。 説明が下手ですいませんが、どうぞ宜しくお願いいたします。

  • IF COUNTIF関数について教えて頂きたいです

    =IF(COUNTIF(A:A,B1)=0,"NG","") 上記の式の詳細について教えて頂きたいです。 私の理解としては、A列とB列を比較しB列にあるものを(B列にしかないもの)検索し、一致する値は0と表示、一致しない値はNGの表示といった解釈でいいでしょうか? =0,"NG","")   ←この式の意味が良くわからずにいます。 作業として行いたいことはA列とB列を比較しB列にしかない値をC列に表示したいです。この式の場合C列に一致しない値をNGと表示させる式だと理解しています。 また、上記の様な関数を説明しているサイトなどがあれば教えて頂きたいです。 宜しくお願いします。

  • If文について

    よろしくお願いします。 Excelのマクロで If文を使おうとしています。 ブックAのシート1に会員No.リストがあり、 ブックBに会員Noをシート番号にしたものがあります。 そこで、会員Noに等しいシートを見つけようと、下記のようにIf文を使いました。 しかし、等しいシート番号があるのに 一致した と出ません。 シートの最後まで進んで 不一致 が出ます。 どこが悪いのでしょうか。ご指導お願いします。 For I = 1 To ActiveWorkbook.Worksheets.Count 'ワークシートの数だけ繰り返す MsgBox 会員No & Worksheets(I).Name If 会員No = Worksheets(I).Name Then MsgBox "一致した" End If Next MsgBox "不一致" 質問の補足ですが、マクロはブックAにあります。 ブックAから会員Noを読み取り、ブックBをアクティブにしてから、If文に入っています。またIf文の前のMsgBox 会員No & Worksheets(I).Name で番号が一致する時があることも確認しています。

  • Perlプログラムにおいて、入力されたパスワードをif文で比較させたい

    Perlプログラムにおいて、入力されたパスワードをif文で比較させたい。 今、Perlプログラムを使ってホームページでクイズを作成中です。 そこで、教えて頂きたいのですが、ホームページに入れる人は、事前に通知した人にのみで、パスワード入力をしてもらう方式にしたいと思っています。 パスワードも一人一人に違うものではなく、3種類程度を考えています。 Perlプログラムの中に if ($passwd eq '1234') 程度に考えています。 でも、Perlプログラムソースを見られたら一目瞭然で判ってしまいます。 プロバイダはniftyで、index.cgiのファイル名にします。 基本的な質問で恐縮ですが、もっと良い方法、注意しないといけない点、などを教えて下さい。

    • ベストアンサー
    • Perl