如何获取用户输入并在脚本中为Perl使用该值

时间:2014-06-18 07:04:11

标签: perl user-input

我需要做以下事情:

Print "User please enter the age, sex, blah_blah" > $age>$sex>$blah_blah;


print "the current user stats are- age = $age, sex = $sex";

my $rand;

if ($blah_blah > $rand)

      {

      do something

      }

else 

      {
      something else
      }

有人可以帮助我从用户那里获取输入,然后能够在脚本中使用该值吗?

我也希望能够将此脚本运行为:

perl script1 -age -sex -blah_blah

我的意思是,我不是要求用户提供这些值,而是在命令行中输入这些值,而我的脚本是否仍然可以使用这些?

这可能吗?如果是这样,我还可以添加-help,即perl script1 -help,如果这可以打印出来自脚本的一些评论吗?

2 个答案:

答案 0 :(得分:1)

尝试使用命令行选项并帮助..运行...代替我的params把年龄,性别,地址放在你想要的任何地方。

perl test.pl -pass' abcd' -cmd' abcd' -path'路径' -value' testde'

#!/usr/bin/perl


use Getopt::Long;
GetOptions ("value=s" => \$value,    # string
              "cmd=s"   => \$cmd,      # string
              "pass=s"  => \$pass,# string
              "help"=> \$help ) 
or die("Error in command line arguments\n");


if ( $help ){
        print " this is a test module for help please bare with it ";
        exit;
}
 print "$cmd,$pass\n";

答案 1 :(得分:0)

Perl模块IO :: Prompt :: Tiny对于提示提示消息,可移植地接受输入或在检测到非交互式运行时接受默认值非常有用。

将此与Getopt :: Long结合使用以接受命令行输入。

您的程序可能会检查Getopt :: Long选项的定义,并且对于在命令行上未提供的每个选项,请调用prompt()

Perl模块Pod :: Usage。使用信息和文档变得微不足道。

以下是一个例子:

use strict;
use warnings;
use IO::Prompt::Tiny 'prompt';
use Pod::Usage;
use Getopt::Long;


my( $age, $sex, $blah, $help, $man );
GetOptions(
  'age=s'  => \$age,
  'sex=s'  => \$sex,
  'blah=s' => \$blah,
  'help|?' => \$help,
  'man'    => \$man,
) or pod2usage(2);

pod2usage(1) if $help;
pod2usage(-exitval => 0, -verbose => 2) if $man;


$age  //= prompt( 'Enter age: ', '0'          );
$sex  //= prompt( 'Enter sex: ', 'undeclared' );
$blah //= prompt( 'Blab now:  ', ''           );

print "Your age was entered as <$age>, sex declared as <$sex>, and you ",
      "chose to blab about <$blah>.\n";

__END__

=head1 User Input Test

sample.pl - Using Getopt::Long, Pod::Usage, and IO::Prompt::Tiny

=head1 SYNOPSIS

    sample.pl [options]

        Options:
          -help        Brief help message.
          -age n       Specify age.
          -sex s       Specify sex.
          -blah blah   Blab away.

=head1 INTERACTIVE MODE

If C<-age>, C<-sex>, and C<-blah> are not supplied on the command line, the
user will be prompted interactively for missing parameters.

=cut

Getopt :: Long和Pod::Usage是核心Perl模块;它们随每个Perl发行版一起提供,因此您应该已经拥有它们。 IO::Prompt::Tiny在CPAN上,虽然它有一些非核心构建依赖项,但它的运行时依赖性只是核心,而且非常轻量级。