On 3/3/24 04:25, Elizabeth Mattijsen wrote:
On 3 Mar 2024, at 05:12, ToddAndMargo via perl6-users <perl6-users@perl.org>
wrote:
$ raku -I./ -c CobianWrapper.pl6
Missing block
at /home/CDs/Windows/NtUtil/CobianWrapper.pl6:1000
1000 is the last line in my code. I presume by
"block" they mean something like "]" or "}"
Do I really have to read 1000 lines of code to find my screw
up? Anyone have a tip on how to find it quicker?
I use `vim` as the editor.
In `vim` if I have this situation, then I put the cursor on the first opening {
and press `%`. This brings me to the corresponding closing }.
If the associated closing curly does not match your expectations, then you're
nearing the source of the problem.
I assume other code editor have a similar `%` functionality.
Hi Elizabeth,
I learned vi about 35 years ago. I still use
it occasionally. I will have to try out that
% feature out. Thank you! (I just made
a quick "Keeper" out of it.)
I use Geany for programming a lot. Primarily
as is works well with ssh X11 over poor internet
connections.
Geany has a thing were you park on a bracket of
some type and it will turn the other end blue.
So, something similar to vi (an alias to vim).
To work around the missing block issue, I always
place both sides of a {} before writing inside
them. It does not always work if I ramble too much.
And it is the tip off that I have rambled on too
much and need to put some things into subs.
Considering I am a YUGE proponent of "top down"
programming, I really should know better.
This is what became of your help:
sub SortList( @List, Str $Msg, Bool $NoDebug ) {
my @Sorted = Empty;
@Sorted = @List.sort(*.split(/\d+/, :kv).map({ (try .Numeric) //
$_}).List);
if %Options< Debug > && not $NoDebug {
print "$Msg";
for @Sorted.kv -> $Index, $Element {
print " Element [$Index] <$Element>\n";
}
}
return @Sorted;
}
sub ListParentDir( Str $Msg, Bool $NoDebug = False ) {
# list and sort %Options<ParentDir>
my @List = Empty;
for dir( %Options<ParentDir> ) { push @List, $_.Str };
@List = SortList @List, $Msg, $NoDebug;
return @List;
}
It really cut down on the clutter and made missing
bracket much easier to find.
Oh and you helped me fix a bug in my program that I
had though was a Windows error that had been going
on for years. Thank you again!
-T