Ваша подпрограмма ожидает число в качестве первого аргумента.Вы получаете доступ к аргументу, когда делаете:
my $number = shift;
Что на самом деле примерно эквивалентно:
my ($number) = @_;
Итак, как вы можете видеть, @_ - это специальная переменная, которая представляет списокАргументы, которые были переданы подпрограмме.
Проблема в вашем коде состоит в том, что вы не передаете аргумент своей подпрограмме.Это:
my $result = square();
Должно быть записано как:
my $result = square($number);