Hi all!
I have the following function for openning a file: sub openFile {
my ($file, $accessMode) = @_;
my $err;
if (! defined($accessMode)) { # by default, open the file for re
+ading
$accessMode = $MODE_READ;
}
if (exists($ACCESS_MODES{$accessMode})) {
if (! open(FILE, "$ACCESS_MODES{$accessMode}$file")) {
$err = $!;
if (defined($returnOnError)) {
return $FALSE;
}
&throwGenError("Can't open $file: $err"); # throw except
+ion
}
} else {
&throwGenError("In openFile: Wrong access mode $accessMode");
}
return FILE;
}
The problem is when I call it in a function, and before closing the file handler I call another function the also opens a file (another file), for example: sub func1 {
my (@fileContent,@temp, @comment);
my $contentFh = &openFile($file1);
while (my $line = <$contentFh >) {
...
push(@fileContent,&func2($line));
...
}
}
close($contentFh);
return \@fileContent;
}
sub func2 {
my ($user) = @_;
my @groupsFile;
my $groupsFh = &openFile($file2);
@groupsFile = <$groupsFh>;
close($groupsFh);
...
return @groupsFile;
}
When calling func1 I get the following errors to screen: readline() on closed filehandle FILE at /var/www/cgi-bin/lib/myfile.pl
+ line 25.
It's the leine of the while(). It doesn't happen when I don't call func2 from within func1, I guess the close() call in func2 somehow effects func1.
Anywhy can explain the problem and suggest a solution?
Thanks a lot
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
|
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.
|
|