Передайте аргумент через командную строку и всплывающее окно, если пользователь не дал ввод - PullRequest
0 голосов
/ 10 марта 2011

Код ниже создает файл и принимает входной аргумент через командную строку.

Я хочу сделать две вещи:

  1. Если пользователь забыл ввести ввод в командной строке, система должна выдать какое-то предупреждение или сообщение. Предположим, что если я забыл указать входной аргумент, система не должна продолжать выполнение скрипта.

  2. Предположим, если система пытается создать уже существующий файл, в настоящее время мы справляемся с отображением сообщения типа «Файл уже существует», но вместо этого я хочу спросить что-то вроде «Файл уже существует, вы уверены? Вы хотите переопределить? да / нет ". Если он отвечает «да», просто переопределите существующий, иначе система должна запросить другой ввод от пользователя.


#!/usr/local/bin/perl
#print "content-type: text/html \n\n";  #HTTP HEADER

$numArgs = $#ARGV + 1;
foreach $argnum (0 .. $#ARGV) {
   $GET_ALL_USER_INPUTS = "$ARGV[$argnum]\n";
}
@INPUT_ARR = split(/,/, $GET_ALL_USER_INPUTS);
$filename = "DD_WRITE_${INPUT_ARR[0]}.txt";
$GET_ARR_SIZE = scalar @INPUT_ARR;
$CLIENT_NAME = "T-sys";

$DD_CONTENT =  "Design Document  ${INPUT_ARR[0]} - ${CLIENT_NAME} :-\n";
$DD_CONTENT .= "--------------------------------------";
#get the  no length and generate dotted lines
for($i=0;$i<=length(${INPUT_ARR[0]});$i++){
    $DD_CONTENT .= "-";
}
$DD_CONTENT .= "--------------\n";
$DD_CONTENT .= "Database Details\n";

if (-e "${filename}") {
    print "File exists!";
    exit;
}
else {
    open(FILE, ">", "$filename") or die "Cannot open $filename - $!";
    print FILE "${DD_CONTENT}\n";
    close (FILE);
}

Ответы [ 2 ]

2 голосов
/ 10 марта 2011

Я понимаю, что вопрос «Как мне подсказать пользователя?» потому что вы не знаете, как это сделать. Я пропускаю часть 1 описания проблемы, потому что вы уже знаете о exit.

Во-первых, вы должны заменить обработку аргументов командной строки на Getopt :: Long . Как написано сейчас, это излишне запутано.

Получение ввода от пользователя во время выполнения легко с ExtUtils :: MakeMaker , который уже поставляется с дистрибутивом Perl.

use ExtUtils::MakeMaker qw(prompt);
my $user_answer = prompt 'Okay to overwrite? ';
if ('y' eq $user_answer) { …

Я вижу, что вы закомментировали кусок кода об HTTP. Если вы намереваетесь запустить эту программу в среде CGI, запрос не будет работать так, как вы ожидаете. В Интернете вам нужна совсем другая технология и поток управления.

0 голосов
/ 10 марта 2011

Существование аргумента командной строки можно определить довольно легко:

if (exists $ARGV[0]) { do_stuff_with_args } else { die "No arguments!"; }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...