What happens when you assign to $0?
According to git log I've submitted 33 patches to perl core, I just submitted another one which on Linux changes this:
Into this:
If this patch gets applied doing killall onion on 5.14 will get you a dead process instead of onion: no process found, the same goes for ps(1) and top(1) which read the legacy process name by default. Before this patch the behavior of $0 assignment on Linux hadn't changed since perl 4.000 came out.