Thread Frage zu GetOptions - warum funktioniert meine Erweiterung nicht ? (3 answers)
Opened by jan99 at 2014-11-18 08:24

jan99
 2014-11-18 08:24
#178411 #178411
User since
2008-09-18
439 Artikel
BenutzerIn
[default_avatar]
Moin !

ich habe, unter win7, ein einfaches Script zum Zählen von Dateien. (Urquelle: msg #177948)

Das wird derzeit noch so aufgerufen ...

Code: (dl )
perl C:\Perl-Tools\tile_counter.pl --dir=%folder2delete%\%%n\ --file=*.png


und das Perl sieht wie folgt aus:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#!/usr/bin/perl
use strict;
use warnings;
use 5.010;

use Cwd;
use File::Spec;
use Getopt::Long;
use File::Find::Rule;

$| = 1;

my $PROGNAME = ( split m|[\\/]|, $0 )[-1];

help() if !@ARGV;

my ( @filemask, @dir );
my ( $wiki_output, $help );
GetOptions(
    "f|file=s" =>
      \@filemask,                   # filemasks to select several files (DEFAULT: all files)
    "d|dir=s"  => \@dir,            # dirs for scan (DEFAULT: current dir)
        "wiki" =>   \$wiki_output,      # report in wiki-format (DEFAULT: off)
    "h|help" => \$help              # show help
) or die "Error in command line arguments\n";

### set defaults of parameters if not already set
push @dir, Cwd::cwd()
  if not @dir;              # use current dir, if no parameter --dir defined
  $wiki_output     //= 0;

help() if $help;

..


Nun wollte ich dieses soweit aufbohren das ein Wert zum Hochzählen der der Ordner mit eingebaut werden kann. Das weitere rund-her-um ist sollte nebensächlich sein.

Der Aufruf soll jetzt wie folgt aussehen:
Code: (dl )
perl C:\Perl-Tools\tile_counter.pl --from=10 --to=20 --dir=%folder2delete%\%%n\ --file=*.png


und mein Code sieht wie folgt aus:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#!/usr/bin/perl
use strict;
use warnings;
use 5.010;

use Cwd;
use File::Spec;
use Getopt::Long;
use File::Find::Rule;

$| = 1;

my $PROGNAME = ( split m|[\\/]|, $0 )[-1];

help() if !@ARGV;

my ( @filemask, @dir );
my ( $wiki_output, $help, $from, $to);
GetOptions(
    "f|file=s" => \@filemask,         # filemasks to select several files (DEFAULT: all files)
    "d|dir=s"  => \@dir,              # dirs for scan (DEFAULT: current dir)
    "wiki" =>     \$wiki_output,      # report in wiki-format (DEFAULT: off)
    "f|from=i" => \$from,             # zoom level FROM (or min)
    "t|to=i" =>   \$to,               # zoom level TO (or max)
    "h|help" =>   \$help              # show help
) or die "Error in command line arguments\n";

### set defaults of parameters if not already set
push @dir, Cwd::cwd()
  if not @dir;              # use current dir, if no parameter --dir defined
  $wiki_output     //= 0;

help() if $help;

for my $i ($from .. $to) {
        print "$i\n";
    }


Was mich nur wunder ist, dass die Hochzählschleife nicht erreicht werden kann.

Kann mir einer weiterhelfen?

Gruß Jan :-)
perl-Greenhorn - Win7 64bit / strawberry (ehem. activeperl) - www.OpenStreetMap.de

View full thread Frage zu GetOptions - warum funktioniert meine Erweiterung nicht ?