【问题标题】:Perl script with options [closed]带有选项的 Perl 脚本 [关闭]
【发布时间】:2016-10-05 20:40:39
【问题描述】:

我正在寻找执行以下操作的 Perl 脚本:

  1. 有两个选项,例如script.pl -option1 -option2

  2. 选项 1 有两个选择,比如 choice1choice2,我有 shell 代码 做这两个动作(我希望我可以移植到 Perl)

  3. 这里选项2是路径,是可选的。如果未指定,则使用当前目录

所需的脚本

checks arguments

if choice 1 :

go to path (arg2)

run a code (i have it ready)

If choice 2

 go to path (arg2 )
 
 run a code
 

【问题讨论】:

  • 你的问题是什么?另外,你为什么用 regex 标记?
  • 此模块use Getopt::Long; 将通过@choroba 解决方案帮助您选择点。
  • 如前所述,这个问题没有多大意义。使用给定的命令行,如何提供 choice1choice2 的值?
  • script.pl 操作路径 这是脚本的运行方式,例如:script.pl enable /home/user
  • 你试过什么? “请为我编写代码”形式的问题是题外话,但是如果您可以向我们展示一些(有效或几乎有效的)Perl,您已经开始编写并询问有关它的特定问题,我们可以提供帮助。 (或者您可以寄给我 100 美元,我可以为您将您的 sh 代码转换为 Perl,当然)。

标签: perl shell


【解决方案1】:

(未测试)

#! /usr/bin/perl
use warnings;
use strict;

my ($action, $path) = @ARGV;
$path //= '.';
chdir $path or die "Cannot chdir to $path.\n";

my $script = {
    choice1 => 'script1.sh',
    choice2 => 'script2.sh',
}->{$action};

die "Invalid choice $action.\n" unless defined $script;
0 == system $script or die "Status: $?";

script.pl choice1 /path 运行。

【讨论】:

  • 感谢会试一试。虽然我猜它不关心选项 2 是路径,如果它没有指定它是可选的,它将 cwd 作为路径
  • @user2047036:如果不指定选项2,点将分配给$path,相当于cwd。
  • 谢谢,我试试看。刚开始学一点perl
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-15
  • 1970-01-01
  • 2012-04-05
相关资源
最近更新 更多