【Perl】サブルーチンの呼び出しについて

package Indicate_TEMP;

use Exporter 'import';
our @EXPORT = qw/get_date_temp get_api_data return_temp print_temp/;
our $VERSION = "0.0.1";

use LWP::UserAgent;
use strict;
use warnings;
use utf8;
use Encode;
use JSON::XS 'decode_json';
use Data::Dumper;
use DateTime;



#API Key、URLの代入。
my $date = $ARGV[0];

&get_date_temp($date);

sub get_date_temp{
    my ($date) = @_;
    if (!$date){
        my $dt = DateTime->now(time_zone => 'Asia/Tokyo');
        $dt->add( days => 1 );
        $date = $dt->ymd('-');
    }
    unless ($date =~ /\d{4}-\d{2}-\d{2}/){
        print "Please enter the correct date format.\n";
        return undef;
    }


    my $api_data = &get_api_data;
    my $temp_ref = &return_temp($api_data, $date);
    &print_temp($temp_ref, $date);

    return 1;
}

サブルーチンの中でサブルーチンを呼び出すのは可能だが、サブルーチンの中でサブルーチンを定義するとコードが読みづらくなるので、避けましょうというお話。