in reply to Re: Re: Re: copy files
in thread Global symbol $dir requires a explicit package name ?

Thanks for your help!!! I didn't think of it, but each file that I'm copying to the new directory has the same name called "word1.rtf" I would need to rename each file because if not they will not copy with the same name. Have you seen anywhere or do you know of a method to rename files dynamicaly while you are copying files to another directory? I'll appreciate any suggestions. Thanks a lot

Replies are listed 'Best First'.
Re: Re: Re: Re: Re: copy files
by tachyon (Chancellor) on Feb 25, 2003 at 02:42 UTC

    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