跳过用户输入

时间:2015-04-26 20:21:30

标签: perl

我正在使用:

use Term::Prompt;
use Term::ReadKey;

我有我的用户输入部分:

my $value1 = prompt( 'n', 'Enter num1: ', '', '' );
my $value2 = prompt( 'x', 'Enter name1: ', '', '' );
my $value3 = prompt( 'n', 'Enter num2: ', '', '' );
my $value4 = prompt( 'n', 'Enter num3: ', '', '' );
my $value5 = prompt( 'x', 'Enter name2: ', '', '' );

这是我的问题:

SELECT data1, data2, data3
           FROM Table1
          WHERE value1 = '$value1'
 AND NOT EXISTS (
         SELECT NULL
           FROM Table2
          WHERE value2 = '$value2')
 AND NOT EXISTS (
         SELECT NULL
           FROM Table3
          WHERE value3 = '$value3')
 AND NOT EXISTS (
         SELECT NULL
           FROM Table4
          WHERE value4 = '$value4')

我正在尝试使用'按键'喜欢输入 esc 来跳过输入并使用默认值,而不使用提示中的默认设置,因为我不希望用户看到默认。

如果不清楚,我希望这是。

因此,对于提示3和4,我希望用户只需按 enter 键,然后提示使用默认值并跳过提示。

-OR -

有没有更好的方法来执行此操作,因为查询中不需要某些提示?

1 个答案:

答案 0 :(得分:0)

由于您的默认设置为''他们会评估为假,所以使用逻辑或运算符' ||'像这样:

 my @defaults = ( ... a list of default values ... );

 my $value1 = prompt( 'n', 'Enter num1: ',  '', '' ) || $defaults[1];
 my $value2 = prompt( 'x', 'Enter name1: ', '', '' ) || $defaults[2];
 my $value3 = prompt( 'n', 'Enter num2: ',  '', '' ) || $defaults[3];
 my $value4 = prompt( 'n', 'Enter num3: ',  '', '' ) || $defaults[4];
 my $value5 = prompt( 'x', 'Enter name2: ', '', '' ) || $defaults[5];

如果提示符返回默认的空字符串,它将评估OR的右侧并返回所需的默认值。