in reply to Getopts::[Std|Long]. How define a option -L1

Getopt::Std has the functionality you need:

#! perl use strict; use warnings; use Getopt::Std; our ($opt_p, $opt_L); getopts('p:L'); # -p takes an argument, -L is a boolean flag print "p switch: $opt_p\n"; print "L switch: $opt_L\n";

Output:

16:01 >perl 698_SoPW.pl -L -p foo p switch: foo L switch: 1 16:01 >

As this is a core module, it’s also documented in the Perl documentation: Getopt::Std.

Hope that helps,

Athanasius <°(((><contra mundum Iustus alius egestas vitae, eros Piratica,

Replies are listed 'Best First'.
Re^2: Getopts::[Std|Long]. How define a option -L1
by Pazitiff (Novice) on Aug 27, 2013 at 06:21 UTC
    That is Ok. But how I should give to script options like -L1 or -L2. I mean, that my script must check "Oh master, I see that you defined -L1! Ok, i am do it"? Do I should check bolean -L and later 1 or 2?

      Ok, I think I understand what you’re looking for a little better now. Use Getopt::Long:

      #! perl use strict; use warnings; use Getopt::Long; my $L1 = ''; my $L2 = ''; my $p = ''; GetOptions('L1=s' => \$L1, 'L2=s' => \$L2, p => \$p); print "L1 switch: $L1\n"; print "p switch: $p\n";

      as documented in Getopt::Long. Output:

      16:39 >perl 698_SoPW.pl --L1 foo -p L1 switch: foo p switch: 1 16:39 >

      But note that if there is no L2 switch defined here, --L (or even -l) will be accepted as an abbreviation for L1. From the documentation, it appears that this is a feature, not a bug: see Case and abbreviations.

      Hope that helps,

      Athanasius <°(((><contra mundum Iustus alius egestas vitae, eros Piratica,

        Too much typing :)  my %opt; GetOptions( \%opt, qw[ L1=s L2=s p! ]);