close ( $SmtpHandle ); }

Your indenting has done you wrong - you close the file handle inside the
loop for loop, so it closed after the first print.

On Fri, Sep 29, 2017 at 1:49 AM, ToddAndMargo <toddandma...@zoho.com> wrote:

> Hi All,
>
> I am stumped.  This only screws up in the for loop.
>
> This is only the chopped up version
>
> <code>
> #!/usr/bin/env perl6
>
> my $SmtpIniFileName = $?FILE ~ ".ini";
> my %SmtpIni = [ 'DebugTrace' => "",      #   1 | 0  (-vvv)
>                 'smtp'       => "",      #   smtp.zoho.com
>                 'port'       => "",      #   465 (ssl), 587 (tls), 25, 80,
> 3535 etc.
>                 'username'   => "",      #   Typically the sender's eMail
> address, but not always.
>                                          #   Blank will default tothe
> sender's eMail address;
>                 'password'   => "",      #   User's ($username) password
>                 'from'       => "",      #   The sender's eMail address;
>                 'to'         => @[""],   #   qw [ la...@zoho.com
> cur...@gmail.com ];   # This is an array, not a string; delimit with a
> space
>                 'Subject'    => "",      #   Subject of the eMail
>                 'Text'       => "",      #   Body (verbage) of the eMail
>                 'FileName'   => @[""] ]; #   attachment path and name.
> Leave blank for no attachment
>
>
> sub PrintRed    ( $Str ) { print color('bold'), color('red'),   "$Str",
> color('reset'); }
> sub PrintGreen  ( $Str ) { print color('bold'), color('green'), "$Str",
> color('reset'); }
> sub PrintBlue   ( $Str ) { print color('bold'), color('blue'),  "$Str",
> color('reset'); }
> sub PrintRedErr ( $Str ) { $*ERR.print: color('bold'), color('red'),
> "$Str", color('reset'); }
>
> sub CreateSmtpIni () {
>         my $SmtpHandle = open( $SmtpIniFileName, :rw );  # Read/write,
> create if does not exist
>         chmod 0o400, $SmtpIniFileName;                   # Read//write to
> root only
>         RunNoShell ( "chown root.root $SmtpIniFileName" );
>
>         $SmtpHandle.print( "# SmtpIni file for for $IAm\n" );
>         $SmtpHandle.print( "#    This file must be owned by root.root and
> have a permission of 400\n" );
>         $SmtpHandle.print( "#    Do not use a space after the = sign.  \n"
> );
>         $SmtpHandle.print( "#\n" );
>
>         for %SmtpIni.kv -> $key, $value {
>                 PrintGreen ( "key = <$key>  value =<$value>\n" );
>            if    ( $key eq "to" )       { $SmtpHandle.print( "$key=
> #delimiter is a comma\n" ); }
>        elsif ( $key eq "FileName" ) { $SmtpHandle.print( "$key= #delimiter
> is a comma\n" ); }
>        else { $SmtpHandle.print( "$key=\n" ); }
>     close ( $SmtpHandle ); }
>
>         PrintRedErr ( "$SmtpIniFileName was not found.  Recreating a blank
> template.\n" );
>         PrintRedErr ( "Please edit this template and try again.  Cowardly
> existing.  Bummer dude.\n\n" );
>     exit 2;
> }
>
> CreateSmtpIni();
>
> </code>
>
> # CheckRaid.pl6
> key = <Subject>  value =<>
> key = <port>  value =<>
> write bytes requires an object with REPR MVMOSHandle (got VMNull with REPR
> Null)
>   in sub CreateSmtpIni at ./CheckRaid.pl6 line 52
>   in sub GetSmtpIni at ./CheckRaid.pl6 line 62
>   in block <unit> at ./CheckRaid.pl6 line 143
>
> Line 52 is
>     else { $SmtpHandle.print( "$key=\n" ); }
>
> # cat CheckRaid.pl6.ini
> # SmtpIni file for for CheckRaid.pl6
> #    This file must be owned by root.root and have a permission of 400
> #    Do not use a space after the = sign.
> #
> Subject=
>



-- 

a

Andy Bach,
afb...@gmail.com
608 658-1890 cell
608 261-5738 wk

Reply via email to