All you need to do is
copy( "C:\\somename", C:\\some_path\\some_other_name" )
To generate the new names dynamically you use something like:
# this is a test example my $name = 'doc.txt'; for ( 1 .. 10 ) { my $unique = get_unique_filename($name); $names{$unique}++; print "$unique\n"; } sub get_unique_filename { my $name = shift; $name =~ s/(\.[^\.]+)$//; my $ext = $1 ? $1 : ''; my $tries = ''; my $max_tries = 100; while ( not unique_name($name.$tries.$ext) ) { $tries++; die "Could not make a unique file name $name\n" if $tries > $m +ax_tries; } return $name.$tries.$ext; } # this tests if our name exists in the test hash # you need to test if the file exists here instead sub unique_name { my $name = shift; return defined $names{$name} ? 0 : 1; # return -e $name ? 0 : 1; }
Without the demo code all you need is a single sub that looks like:
sub get_unique_filename { my $name = shift; $name =~ s/(\.[^\.]+)$//; my $ext = $1 ? $1 : ''; my $tries = ''; my $max_tries = 100; while ( -e $name.$tries.$ext ) { $tries++; die "Could not make a unique file name $name\n" if $tries > $m +ax_tries; } return $name.$tries.$ext; }
cheers
tachyon
s&&rsenoyhcatreve&&&s&n.+t&"$'$`$\"$\&"&ee&&y&srve&&d&&print
In reply to Re: Re: Re: Re: Re: copy files
by tachyon
in thread Global symbol $dir requires a explicit package name ?
by skyler
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |