=================================================
Subroutine with empty block
=================================================

sub hello {
}

---

(source_file
  (function_definition (identifier)
    (block)
  )
)

=================================================
Subroutine call / function call
=================================================

hello();

---

(source_file
  (call_expression
    function_name: (identifier) args: (empty_parenthesized_argument)) (semi_colon)
)

=================================================
Subroutine with arrow notation
=================================================

my $result = GetSalesforceTemplateInfo($dbh)->{$args->{ALOHA}}->{'NAMASTE'};

---

(source_file
      (variable_declaration
        (scope)
        (scalar_variable)
        (hash_access_variable
          (hash_access_variable
            (call_expression
              (identifier)
              (arguments
                (argument
                  (scalar_variable))))
            (hash_access_variable
              (scalar_variable)
              (bareword)))
          (string_single_quoted)))
      (semi_colon))

=================================================
Subroutine calling another subroutine without params
=================================================

print Dumper %{$args};

---

(source_file
  (call_expression (identifier) (arguments (argument
    (call_expression (identifier) (arguments (argument (hash_dereference (scalar_variable)))))))) (semi_colon)
)

=================================================
Subroutine with CODE signature TODO: (&) doesn't work
=================================================

sub Run (&&) {

}

---

(source_file
  (function_definition (identifier) (function_prototype (prototype))
    (block)
  )
)
