Re: Raku opens a notepad when executing a .bat

[email protected] (ToddAndMargo via perl6-users)
Newsgroups perl.perl6.users
Message-ID <[email protected]>
On 12/6/22 01:44, ToddAndMargo via perl6-users wrote:
> Hi All,
> 
> Windows Pro Chromebook Edition 22H2  (W11)
> raku -v  Welcome to RakudoΓäó v2022.07.
> 
> When ever I run the following, it opens
> a Notepad with the text of the calling
> raku program.
> 
> raku -e "use lib '.'; use NativeWinUtils :RunCmd; say RunCmd(Q[ls]);"
> 
> This is RunCmd
> 
> sub RunCmd( Str $CommandStr, Bool $EchoOff = False ) returns Str is 
> export( :RunCmd )  {
>     my $PathIAm          = $?FILE;
>     my Str $BatFile = $PathIAm ~ ".bat";
>     # print "$BatFile\n";
>     my Str $RtnStr;
>     my Str $CmdStr = "";
> 
>     if $EchoOff  { $CmdStr = Q[@echo off] ~ "\n"; }
>     $CmdStr = $CmdStr ~ $CommandStr ~ "\n";
>     # print "$CmdStr";
> 
>     spurt( $BatFile, $CmdStr );
>     $RtnStr = qqx { $BatFile };
>     # print "$RtnStr\n";
> }
> 
> 
> It is the qqx command (it runs the created .bat file)
> that opens the notepad.
> 
> The .bat file, which I leave on the disk,
> runs fine manually.
> 
> And I did this to myself.  I had a pop up that
> asked me what to do with something and I must
> have clicked on it by accident.
> 
> -T
> 


Its a bug in Raku:



qqx tries to run the module, not the sub inside the module:

Windows 10 Pro 21H2
Windows 11 Pro 22H2

https://rakudo.org/dl/rakudo/rakudo-moar-2022.07-01-win-x86_64-msvc.msi


When you run this sub inside your program, there is no issue.

If you put the sub into a module, then qqx tries to
run the module itself, not the batch file this sub
creates:


<RunCmdModule.pm6>
# unit module RunCmdModule;
# RunCmdModule.pm6


sub RunCmd( Str $CommandStr, Bool $EchoOff = False ) returns Str is 
export( :RunCmd )  {
    my $PathIAm          = $?FILE;
    my Str $BatFile = $PathIAm ~ ".bat";
    # print "$BatFile\n";
    my Str $RtnStr;
    my Str $CmdStr = "";

    if $EchoOff  { $CmdStr = Q[@echo off] ~ "\n"; }
    $CmdStr = $CmdStr ~ $CommandStr ~ "\n";
    # print "$CmdStr";

    spurt( $BatFile, $CmdStr );
    $RtnStr = qqx { $BatFile };
    # print "$RtnStr\n";
}
</RunCmdModule.pm6>


Test one liner (run in the same directory as the module):
      raku -e "use lib '.'; use RunCmdModule :RunCmd; say RunCmd(Q[ls]);

Result: Windwos tries to run a .pm6 file
    https://imgur.com/q7NzxIil.png




-- 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Computers are like air conditioners.
They malfunction when you open windows
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.