# globale Definition der Kommando-Pfade my %cmd = ( rar => '/path/to/rar', ); # globale Definition von Optionen pro Kommando, die immer gelten sollen my %opts = ( rar => [ 'a', '-m0' ], ); # .... sub rar { my $archive = shift; my @files = @_; if ( !exists $cmd{rar} ) { die "No path to rar is defined in \%cmd\n"; } elsif ( not -x $cmd{rar} ) { die "$cmd{rar} is not executable\n"; } my @cmd = ( $cmd{rar}, # wenn globale Optionen definiert sind, nutze sie ( $opts{rar} ? @{$opts{rar}} : () ), $archive, @files ); return system(@cmd); } # ... rar( $archive, @files ) or die "rar failed for '$archive' : $!\n";