Browse Source

Better way to parse args

Alois Mahdal 10 years ago
parent
commit
3bb78fb7ea
1 changed files with 15 additions and 5 deletions
  1. 15
    5
      bin/mkexec

+ 15
- 5
bin/mkexec View File

5
 use warnings;
5
 use warnings;
6
 
6
 
7
 sub usage; sub mkexec; sub guesstype; sub getcmd; sub launch_editor;
7
 sub usage; sub mkexec; sub guesstype; sub getcmd; sub launch_editor;
8
-sub nextarg { $ARGV[0] }
9
 
8
 
10
 my $DEFAULT_TYPE = 'sh';
9
 my $DEFAULT_TYPE = 'sh';
11
 my $DEFAULT_MODE = 0755;
10
 my $DEFAULT_MODE = 0755;
16
 ## INIT ## -------------------------------------------------------------------
15
 ## INIT ## -------------------------------------------------------------------
17
 ## '''' ##   ' ' '  '   '    '     '      '       '        '         '
16
 ## '''' ##   ' ' '  '   '    '     '      '       '        '         '
18
 
17
 
19
-defined nextarg() or usage;
20
-my $force   = (nextarg() eq '-f' ? shift : $DEFAULT_FORCE);
21
-my $name    = (defined nextarg() ? shift : usage);
22
-my $type    = (defined nextarg() ? shift : guesstype $name);
18
+my $force = $DEFAULT_FORCE;
19
+my $name; my $type;
20
+
21
+foreach (@ARGV) {
22
+    if (m/-f|--force/) {
23
+        $force++;
24
+    } elsif (defined $name) {
25
+        $type = $_;
26
+    } else {
27
+        $name = $_;
28
+    }
29
+}
30
+
31
+usage unless defined $name;
32
+$type = guesstype $name unless defined $type;
23
 
33
 
24
 my $bangs = {
34
 my $bangs = {
25
     pl   => `which perl`,
35
     pl   => `which perl`,