zlacker

[parent] [thread] 1 comments
1. dehrma+(OP)[view] [source] 2025-12-06 20:06:24
> bolted on, awkward params passing

Shell had to do this because of shell reasons, like how you need spaces where you shouldn't. Perl post-dated C by over a decade, so there was no reason for goofy argument unpacking.

replies(1): >>ojosil+we
2. ojosil+we[view] [source] 2025-12-06 22:24:25
>>dehrma+(OP)
Yes there was a reason as Perl took inspiration from Lisp - everything is a list- and everyone knows how quick C's variadic arguments get nasty.

So @_ was a response to that issue, given Perl was about being dynamic and not typed and there were no IDEs or linters that would type-check and refactor code based on function signatures.

JS had the same issue forever and finally implemented a rest/spread operator in ES6. Python had variadic from the start but no rest operator until Python3. Perl had spread/rest for vargs in the late 80s already. For familiarity, Perl chose the @ operator that meant vargs in bourne shell in the 70s.

[go to top]