Сравнение входных данных <STDIN> с $ через оператор eq

Discussion in 'PHP' started by VackuM, 19 Apr 2006.

  1. VackuM

    VackuM Member

    Joined:
    4 Apr 2006
    Messages:
    22
    Likes Received:
    5
    Reputations:
    3
    КАК сравнить на равенство (eq) входные данные <STDIN>(текст) со скалярной величиной, лично у меня не выходит.

    Если писать так, то результат ожидаемый. :)

    #!usr/bin/perl -w
    $a="blabla";
    $b="blabla";

    if($a eq $b){
    print "Ok\n";
    sleep(5);
    }
    else{
    print "Oops\n";
    sleep(5);
    }

    А если попробовать с вводом с клавиатуры то увы!!! (При вводе с команд. строки blabla пишет Oops). :mad:

    #!usr/bin/perl -w

    $a=<STDIN>;
    $b="blabla";

    if($a eq $b){
    print "Ok\n";
    sleep(5);
    }
    else{
    print "Oops\n";
    sleep(5);
    }
     
  2. Go0o$E

    Go0o$E Members of Antichat

    Joined:
    27 Jan 2006
    Messages:
    304
    Likes Received:
    228
    Reputations:
    419
    Так вроде работает.
    #!usr/bin/perl -w
    chomp($a = <STDIN>) ;
    $b='blabla';
    if($a eq $b){
    print "Ok\n";
    sleep(5);
    }
    else{
    print "Oops\n";
    sleep(5);
    }
     
    1 person likes this.
  3. xShreKx

    xShreKx Member

    Joined:
    2 Jul 2005
    Messages:
    11
    Likes Received:
    12
    Reputations:
    4
    Знаю я эту ошибку.
    Тока я сам допер =)
    Когда ты набираешь в строке ввода blabla и жмешь Enter, то у тебя в переменную $a=<STDIN>; заносится "blabla/n" А это !eq "blabla"
    Поэтому после $a=<STDIN>; делай chomp($a);
    Так все будет работать.
    З.Ы. chomp() обрезает /n =)