我正在使用:
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 -
有没有更好的方法来执行此操作,因为查询中不需要某些提示?
答案 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的右侧并返回所需的默认值。