ETOOBUSY 🚀 minimal blogging for the impatient
Bind and alias
TL;DR
Of course I had to look into some way of doing binding in Perl too.
In previous post PWC126 - Minesweeper Game I used a binding to work on a matrix row, like this:
my @row := @field[$ri];
and eventually observed:
I guess that something similar can be done with Perl too… but I’m happy like this!
Of course that last statement was a lie, so I went on to look for it.
The first thing that I looked at is Data::Alias:
Data::Alias - Comprehensive set of aliasing operations
…
use Data::Alias; ... alias @x = @y; # alias @x to @y
Seems spot on! Until I read this in the admittedly excellent documentation:
Perl 5.22 added some support for aliasing to the Perl core. It has a different syntax, and a different set of operations, from that supplied by this module; see “Assigning to References” in perlref. The core’s aliasing facilities are implemented more robustly than this module and are better supported. If you can rely on having a sufficiently recent Perl version, you should prefer to use the core facility rather than use this module. If you are already using this module and are now using a sufficiently recent Perl, you should attempt to migrate to the core facility.
Very well then… I plan on using nothing older than the already-old
version v5.24
, so let’s skip Data::Alias and move on to the
official core way of doing this:
use feature 'refaliasing';
no warnings 'experimental::refaliasing';
...
\my @row = $field[$ri];
This is the way of doing the binding. Ehr, the aliasing. Whatever.
I’m not talking from a phylosophical standpoint — of course there might be a ton of subtleties where this is different from binding in Raku — but from the point of view of an unsophisticated programmer this is how we can obtain the same result.
Now I’m happy like this! Stay safe and have fun folks!