I have a function below in perl
sub create_hash()
{
my @files = @_;
foreach(@files){
if(/.text/)
{
open($files_list{$_},">>$_") || die("This file will not open!");
}
}
}
I am calling this function by passing an array argument like below:
create_hash( @files2);
The array has got around 38 values in it.
But i am getting compilation errors:
Too many arguments for main::create_hash at ....
what is the wrong that i am doing here?
my perl version is :
This is perl, v5.8.4 built for i86pc-solaris-64int
(with 36 registered patches, see perl -V for more detail)
Your problem is right here:
The
()is a prototype. In this case, it indicates thatcreate_hashtakes no parameters. When you try to pass it some, Perl complains.It should look like
In general, you should not use prototypes with Perl functions. They aren’t like prototypes in most other languages. They do have uses, but that’s a fairly advanced topic in Perl.