Perl 跳过用户输入

Perl 跳过用户输入,perl,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 num

我正在使用:

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')
我尝试使用诸如enter或esc之类的“按键”跳过输入,而是使用默认值,而不在提示中使用默认设置,因为我不希望用户看到默认值

如果这还不清楚,我希望是这样

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

-或-

由于查询中不需要某些提示,是否有更好的方法来执行此操作?

由于默认值为“”,它们的计算结果将为false,因此使用逻辑or运算符“| |”,如下所示:

 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的右侧,并返回所需的默认值。

(1)您可以使用与代码中使用的默认值不同的“向用户显示”默认值,例如
N/a
;(2) 您可能不应该在查询中包含那些不需要的部分(因此,如果
$value4
没有值,您将省略
,并且不存在(…=“$value4”)
查询部分)。