manish.rathi has asked for the wisdom of the Perl Monks concerning the following question:
use File::Basename
print "filename : ";
chomp(my $old_name = <stdin>);
my $dirname = dirname $old_name ;
my $basename = basename $old_name ;
$basename =~ s/^/not/ ;
my $new_name = "$dirname/$basename" ;
rename($old_name, $new_name);
-----------------------------------------------------
I have some confusion in this syntax
1) when a variable is declared in the main block only, why do we neeed to make it local ? If a variable is declared local in the main block, does it mean that if a subroutine is declared then this variable can not be used inside subroutines as its declared outside the subroutine as local ?
2) my $dirname = dirname $old_name ; # what does this syntax mean ? I have used $num = @number, to find out the number of elements in an array. I have not used any kind of name before a variable name so far.
3) s/^/not/, # does it mean that not will be added at the start of the string ?
4) (my $basename = $name =~ s#./##; # how come there is only one forward slash ?
What is the meaning of this regex ? Whenever we want to substitute values, we do =~ s/something/this/g ; there are two forward slashes in the regex. What kind of regex is this ?
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Pls explain this syntax
by ikegami (Patriarch) on Feb 22, 2009 at 22:20 UTC | |
by manish.rathi (Acolyte) on Feb 23, 2009 at 03:28 UTC | |
by ikegami (Patriarch) on Feb 23, 2009 at 03:53 UTC | |
|
Re: Pls explain this syntax
by gwadej (Chaplain) on Feb 22, 2009 at 22:40 UTC | |
|
Re: Pls explain this syntax
by zwon (Abbot) on Feb 22, 2009 at 22:24 UTC | |
|
Re: Pls explain this syntax
by shmem (Chancellor) on Feb 22, 2009 at 23:25 UTC | |
|
Re: Pls explain this syntax
by scorpio17 (Canon) on Feb 23, 2009 at 14:45 UTC |