in reply to Re: rename files dynamically
in thread rename files dynamically

I appreciate your response. I define $all_directories in another sub routine. I'm passing the vairable to the sub routine that it is going to find, copy and rename the files. I'm not familiar with passing variables between sub routines but I'll appreciate your suggestions.

Replies are listed 'Best First'.
Re: Re: Re: rename files dynamically
by hardburn (Abbot) on Feb 24, 2003 at 16:53 UTC

    In Perl, you need to explicity pull variables off of @_ when passing params in:

    sub arg_test1 { my $arg1 = shift; # shift() defaults to @_ my $arg2 = shift; return $arg1; } # Another way sub arg_test2 { my ($arg1, $arg2) = @_; return $arg1; } my $test1 = arg_test1(1, 2); my $test2 = arg_test2(1, 2);

    ----
    Reinvent a rounder wheel.

    Note: All code is untested, unless otherwise stated

      Perhaps you may be able to help me. I read the example that you send me but I still not clear on how to do it. it seems that I may have a brain cramp. Basically it try to pass an @array variable to another variable to be process. Here is the rest of my code
      #! perl -w use strict; my $infile = 'c:/doclist1.chr'; my $outfile = 'c:/doclist1.txt'; open IN, "<$infile" or die "Couldn't open $infile, $!"; open OUT, ">$outfile" or die "Couldn't open $outfile, $!"; while(<IN>) { chomp; my @fields = split /,/; my $path_str = $fields[6]; do { warn "Empty field 7"; next } unless $path_str; my @path = split /\\/, $path_str; # assuming you want to remove a few directories my @new_path = join "\\", @path[0,5,6]; print OUT "\n@new_path"; } exit;
      I'm trying to pass @new_path to a $_ variable to be process could you please help?
        my @new_path = join "\\", @path[0,5,6];

        @newpath should not be an array variable since the result of join is a scalar. That should be $newpath. If you want to pass that value to a subroutine, do this:

        ... $new_path = join "\\", @path[0,5,6]; process_directory($new_path); ... sub process_directory { my ($path) = @_; #$path gets the value from $new_path above .... }
        --- print map { my ($m)=1<<hex($_)&11?' ':''; $m.=substr('AHJPacehklnorstu',hex($_),1) } split //,'2fde0abe76c36c914586c';