Я не совсем уверен, почему мои операторы if не проверяют ввод пользователя. Вот мой код. Операторы, содержащие регулярные выражения, должны допускать ведение и завершение пробелов.Perl if-statements/regular expressions
sub Menu
{
&processlist;
&creating_Refs;
print "[Sort by COLUMN|sortup|sortdown| quit]:";
my $user_input = <STDIN>;
chomp($user_input);
if($user_input =~ m/[quit\s]/)
{
exit;
}
elsif($user_input eq 'sortup')
{
print "working bro\n\n";
@$VAR1 = sort sortup @$VAR1;
foreach my $ref (@$VAR1)
{
print "$ref->{PID}, $ref->{USER}, $ref->{PR}, $ref->{NI}, $ref->{VIRT}, $ref->{RES}, $ref->{SHR}, $ref->{S}, $ref->{CPU}, $ref->{MEM}, $ref->{TIME}, $ref->{COMMAND} \n";
}
}
elsif($user_input eq 'sortdown \n')
{
print "working on sortdown\n\n";
}
elsif($user_input =~ m/[sort by]+\w/)
{
}
else
{
print "Error, please re-enter command \n\n";
&Menu;
}
}
После замены всех моих операторов if на тот же синтаксис 'if $ user_input eq 'whatever'' Все работает. Спасибо, сэр. – 2013-04-29 01:08:30
Это также соответствует 'quitter' и т. Д. – ikegami