develooper Front page | perl.perl6.users | Postings from December 2022

Re: Raku opens a notepad when executing a .bat

Thread Previous | Thread Next
From:
ToddAndMargo via perl6-users
Date:
December 6, 2022 16:07
Subject:
Re: Raku opens a notepad when executing a .bat
Message ID:
e522c0c1-7add-6d48-0edb-d66e32efc7cb@zoho.com
On 12/6/22 07:31, ToddAndMargo via perl6-users wrote:
> 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
> 

Just opened:

qqx tries to run the module, not the sub inside the module
https://github.com/rakudo/rakudo/issues/5120


Thread Previous | Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About