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 ?
In reply to Pls explain this syntax by manish.rathi
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |