Skip to content
Perl

Подпрограммы и ссылки

Определение subs и использование ссылок для сложных данных.

#subroutine#reference

Code

perl
use strict;
use warnings;

# Basic sub
sub greet {
  my ($name, $greeting) = @_;
  return "$greeting, $name!";
}
print greet("Alice", "Hi");  # "Hi, Alice!"

# Named arguments (via hash)
sub create_user {
  my %args = @_;
  return "User: $args{name}, $args{age}";
}
print create_user(name => "Bob", age => 25);

# Array reference (scalar pointing to array)
my @nums = (1, 2, 3);
my $arr_ref = \@nums;
print $arr_ref->[0];      # 1 (arrow syntax)
print @$arr_ref;          # 123 (dereference)
my $first = $arr_ref->[0];

# Hash reference
my %person = (name => "Alice", age => 30);
my $hash_ref = \%person;
print $hash_ref->{name};  # Alice

# Anonymous arrays/hashes
my $anon_arr = [1, 2, 3];
my $anon_hash = { a => 1, b => 2 };

# Array of hashes (common pattern)
my @people = (
  { name => "Alice", age => 30 },
  { name => "Bob",   age => 25 },
);
for my $p (@people) {
  print "$p->{name}: $p->{age}\n";
}