Is there something that irritates you about Perl? One little thing you wish you could change, to make life so much easier?
For me, it's the way declarations work. Whether it's with local, our or my, you can declare a variable name, or a list of several variable names:
But if you have a number of variables to declare, and they aren't directly related to each other, as (x, y, z) clearly are, it would be so much better to declare the variable and immediately assign a value to it on the same line, the way C, Javascript and numerous sensible langages do.
Currently, 'my', 'our' and 'local' expect a variable name, or a list of mariable names. So one possibility would be to provide an alternative form which takes a hash. Ideally, values defined in one line could be used lower down.
All the same, what little feature would make your Perl day better?
For me, it's the way declarations work. Whether it's with local, our or my, you can declare a variable name, or a list of several variable names:
my ($x, $y, $z);
Of course, you can initaliaze variables as you declare them.
my $bank_balance = -999_999;
my ( $x, $y, $z ) = ( 0, 0, 0 );
But if you have a number of variables to declare, and they aren't directly related to each other, as (x, y, z) clearly are, it would be so much better to declare the variable and immediately assign a value to it on the same line, the way C, Javascript and numerous sensible langages do.
Currently, 'my', 'our' and 'local' expect a variable name, or a list of mariable names. So one possibility would be to provide an alternative form which takes a hash. Ideally, values defined in one line could be used lower down.
my {
$sides => 3,
$lengths => [3, 4, 5],
};
I suppose people will ignore this article or come out with an explanation of why I'm wrong.
All the same, what little feature would make your Perl day better?
Comments
I do not see any advantage with your proposed syntax over just using multiple declarations of independent variables.
As I see it this is also how it is done in C.
my ( $sides, $lengths ) = ( 3, [3, 4, 5] );