Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation
 
PerlMonks  

Re: Re: Win32 bad file descriptor

by Dalin (Sexton)
on Jul 05, 2001 at 21:45 UTC ( [id://94178]=note: print w/replies, xml ) Need Help??


in reply to Re: Win32 bad file descriptor
in thread Win32 bad file descriptor

I did some playing after I submitted my first question and came up with this:
sub parse_mail { my $mail = $_[0]; # print $mail; open "MAIL","<$mail" || die "Cannot open $mail, $!"; @mailf = <MAIL>; chomp (@mailf); my $line; # foreach $line (@mailf) { # print "$line\n"; # } print @mailf; close MAIL || die "Cannot close $mail, $!"; # return @mailf; }
The only differences here being: Removed the parenthasis around the filehandle on the open and close and added double quotes around the file handle for the open statement. This was the last hurdle in getting the entire script to work and does so now, thanks to everyones help. I find it odd though. I have dug through the docs that came with the activestate distro and did not come accross anything regarding this matter... I did find a couple of closely related topics, but none that addressed this particular problem I was having. I'm sure that my inexperience is to blame. Here is the entire script just in case you might be interested. Maybe it might shed the right light on why I was having this problem.
#!/usr/gnu/bin/perl -w # # ###################################################################### +########## use strict; no strict "refs"; use Mail::Sender; my $f2dir = "C:\\windows\\desktop\\tmp\\"; #print "$f2dir\n"; my @names = <$f2dir*.f2mail>; my @mailf; my $file; foreach $file (@names) { if ( (! -d $file) && ($file =~ /\b\.f2mail/) ) { parse_mail($file); }else{ print "Error with $file, $!"; } sender_mail(@mailf); file_clean($mailf[3],$mailf[4],$file); } ###################################################################### +######### # Begin Subroutines # # parse_mail parses the parameter file (*.f2mail) and submits the resu +lts to # Mail::Sender for smtp ###################################################################### +######### sub parse_mail { my $mail = $_[0]; # print $mail; open "MAIL","<$mail" || die "Cannot open $mail, $!"; @mailf = <MAIL>; chomp (@mailf); my $line; # foreach $line (@mailf) { # print "$line\n"; # } print @mailf; close MAIL || die "Cannot close $mail, $!"; # return @mailf; } ###################################################################### +######### # # sender_mail calls the Mail:Sender module and prepares for smtp ###################################################################### +######### sub sender_mail { my @mailf = @_; print $mailf[3]; open (BODY,$mailf[3]) || die "Cannot open $mailf[3], $!"; my @body = <BODY>; close (BODY) || die "Cannot close $mailf[3], $!"; my $sender; ref ($sender = new Mail::Sender ({ from => $mailf[2], smtp => 'humap.segrest.com'})) || die "Send +er error: $sender, $Mail::Sender::Error!\n"; ref (($sender->MailFile( {to => $mailf[0], subject => $mailf[1], msg => "@body", file = +> $mailf[4]}))) || die "Sender error, $sender, $Mail::Sender::Error!, + $!"; return 1; } ###################################################################### +######### # # file_clean unlinks the files specified in the parameter file (*.f2ma +il) and # the parameter file itself ###################################################################### +######### sub file_clean { my $file; foreach $file (@_) { unlink $file || die "Unlink failure: $!"; } return 1; }
The many commented out print statement I used for trouble shooting. Comments on the code??? Thanks for everyone's help on this. Bradley
Where ever there is confusion to be had... I'll be there.

Replies are listed 'Best First'.
Re: Re: Re: Win32 bad file descriptor
by Anonymous Monk on Jul 05, 2001 at 23:45 UTC
    Comment out the line no strict 'refs' and see your open go down in flames. The die at the open will never have an effect because of operator precedence. Feed it a falsified filename an see for yourself. The die at the close has the same problem.

    Essentially your program seems to work because you have turned off the error reporting.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://94178]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others perusing the Monastery: (1)
As of 2024-04-15 19:53 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found