Allow - in file extensions
[conv.git] / conv.pl
diff --git a/conv.pl b/conv.pl
index 2293a36..50d205d 100755 (executable)
--- a/conv.pl
+++ b/conv.pl
@@ -13,16 +13,18 @@ my %opts = (
 getopts('vnsj:f:o:i:', \%opts);
 
 my $dirout;
-if (-d $opts{o}) {
-    # output is a directory
-    $dirout = 1;
-} else {
-    # output is a single file, imply -i <ext>
-    if ($opts{o} =~ /\.(\w+)$/) {
-        $opts{i} = $1;
+if (defined $opts{o}) {
+    if (-d $opts{o}) {
+        # output is a directory
+        $dirout = 1;
     } else {
-        print "Specified -o <file>, but '$opts{o}' has no extension.\n";
-        exit 1;
+        # output is a single file, imply -i <ext> unless -i has also been specified
+        if ($opts{o} =~ /\.(\w+)$/) {
+            $opts{i} = $1 unless exists $opts{i};
+        } else {
+            print "Specified -o <file>, but '$opts{o}' has no extension.\n";
+            exit 1;
+        }
     }
 }
 
@@ -73,7 +75,7 @@ while (<CONF>) {
     s/\s+$//;
     next if /^$/;
 
-    if (/^([\w.]+)\s*=>\s*([\w.]+)\s*:\s*(.*)$/) {
+    if (/^([\w.-]+)\s*=>\s*([\w.-]+)\s*:\s*(.*)$/) {
         $rules{$2}{$1} = $3;
     } elsif (/^($var_re)\s*=\s*(.*)$/) {
         $vars{$1} = expand($2);