#!/usr/bin/perl -w use strict; my $folder = shift @ARGV; exit unless ($folder); my $base_dir = 'C:\\testdir\\'; my @dirs = qw ( schrift.A_B_F_P pl.G_R_V daten.T_S_X cad.Z ); &two_level($folder) if ($folder =~ m/^\w{2}-\d{4}$/); &three_level($folder) if ($folder =~ m/^\w{2}-\d{4}-\w$/); print "Sorry Freunde, so geht es nicht!\n"; exit; sub two_level { my $folder = shift @_; chdir $base_dir or die "$!\n"; die "Verzeichniss existiert bereits!\n" if (-e $folder); mkdir $folder,0755 or die "$!\n"; chdir $folder or die "$!\n"; &structure(); exit; } sub three_level { my $folder = shift @_; chdir $base_dir or die "$!\n"; $folder =~ m/^(\w{2}-\d{4})-(\w)$/; my ($lv1, $lv2) = ($1, $2); die "Verzeichnisse existieren bereits!\n" if (-e "$lv1\\$lv2"); mkdir $lv1,0755 or die "$!\n" unless (-e $lv1); chdir $lv1 or die "$!\n"; mkdir $lv2,0755 or die "$!\n"; chdir $lv2 or die "$!\n"; &structure(); exit; } sub structure { for (@dirs) { mkdir $_,0775 or die "$!\n"; } }