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

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

Replies are listed 'Best First'.
Re: Re: Re: Re: rename files dynamically
by Anonymous Monk on Feb 24, 2003 at 18:11 UTC
    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';