06.08.2006, 04:15
общий
это ответ
Здравствуйте, Lperw!
Ошибка впринципе в том что вы очень уж закрутили условием cмотрим что у вас:
if( $ans ne "yes" or $ans ne "no"){print "mistake;}
Если $ans yes - то будет истинным второе значение и or вернет 1. Если $ans no - первое, опять таки 1, если будет вообще что-то левое, то опять таки будет 1 - т.е. при любом раскладе будет печатать mistake. Условие лучше привести к виду:
if($ans eq yes or $ans eq no){print "your string $ans"} ... ну и так далее, или свести к регулярному выражнию как вам посоветовали раньше:
<code>
#!/usr/bin/perl -w
print qq( \n);
$ans = <STDIN>;
if ($ans=~m/^(да|нет)$/ ){
print "your string $ans \n";
}else{
print "mistake \n";
}
</code>
По поводу use POSIX и use locale - не знаю - у меня все прекрасно и без них работает :).