Assignment should clearly state capitals or lower case. (assumed lower case below).
use 5.18.2;
use warnings;
use charnames qw(:full);
use Test::More;
# 1: Create an array named @letters with 5 elements and fill it with f
+irst 5 letters
# of the English alphabet
diag ("Assignment 1");
# Q: Capitals or lower-case?
my $l = [ "a" .. "e" ];
my @letters;
@letters = ("a", "b", "c", "d", "e"); is_deeply (\@l
+etters, $l);
@letters = ("a" .. "e"); is_deeply (\@l
+etters, $l);
@letters = map { chr } 0x61 .. 0x65; is_deeply (\@l
+etters, $l); # Assuming ASCII
@letters = map { chr ($_ + ord "a") } 0 .. 4; is_deeply (\@l
+etters, $l); # Assuming ASCII
@letters = map { lc } "A" .. "E"; is_deeply (\@l
+etters, $l);
@letters = split m// => "abcde"; is_deeply (\@l
+etters, $l);
@letters = map { charnames::string_vianame ("LATIN SMALL LETTER $_") }
"A" .. "E"; is_deeply (\@l
+etters, $l);
@letters = map { chr charnames::vianame ("LATIN SMALL LETTER $_") }
"A" .. "E"; is_deeply (\@l
+etters, $l);
@letters = map { substr "the quick brown fox jumps over the lazy dog",
+ $_, 1 }
36, 10, 7, 40, 2; is_deeply (\@l
+etters, $l);
@letters = (sort grep m/\S/ => split m// => "the quick brown fox jumps
+ over the lazy dog")[0..4];
is_deeply (\@l
+etters, $l);
@letters = (sort split m// => "the quick brown fox jumps over the lazy
+ dog")[8..12];
is_deeply (\@l
+etters, $l);
@letters = (sort unpack "(A)*", "the quick brown fox jumps over the la
+zy dog" =~ s{\s+}{}gr)[0..4];
is_deeply (\@l
+etters, $l);
@letters = @{[ "a" .. "e" ]}; is_deeply (\@l
+etters, $l);
@letters = sort keys %{{qw( b 3 d 2 a 1 e 9 c 0 )}}; is_deeply (\@l
+etters, $l);
@letters = unpack "x3(a)*", pack "Q>", 418262508645; is_deeply (\@l
+etters, $l);
@letters = (unpack "(a)*",pack"Q<",435475931745)[0..4]; is_deeply (\@l
+etters, $l);
# Not one statement, so these won't qualify
$letters[0] = "a"; $letters[1] = "b"; $letters[2] = "c";
$letters[3] = "d"; $letters[4] = "e"; is_deeply (\@l
+etters, $l);
@letters = ("a"); push @letters, "b", "c" .. "e"; is_deeply (\@l
+etters, $l);
@letters = do { eval q{"a"-"e"} =~ s/-/../r }; is_deeply (\@l
+etters, $l);
# 2: Remove the first element using a list operator and assign it to a
+ scalar variable
diag ("Assignment 2");
my $a2 = [ "b" .. "e" ];
my (@a2, $first) = @letters;
@letters = @a2; $first = shift @letters; is_deeply (\@letters,
+$a2); is ($first, "a");
@letters = @a2; $first = splice @letters, 0, 1; is_deeply (\@letters,
+$a2); is ($first, "a");
@letters = @a2; ($first, @letters) = @letters; is_deeply (\@letters,
+$a2); is ($first, "a");
# 3: Remove the last element using a list operator and assign it to a
+scalar variable
diag ("Assignment 3");
my $a3 = [ "b" .. "d" ];
my (@a3, $last) = @letters;
@letters = @a3; $last = pop @letters; is_deeply (\@letters,
+$a3); is ($last, "e");
@letters = @a3; $last = splice @letters, -1, 1; is_deeply (\@letters,
+$a3); is ($last, "e");
@letters = @a3; ($last, @letters) = ($letters[-1],
@letters[0..($#letters-1)]); is_deeply (\@letters,
+$a3); is ($last, "e");
# 4: Join these two removed elements with a '-' (using single quotes)
+sign and assign
# the result to a scalar named $result
# Q: Why single quotes? WHY? I only use single quotes if I really have
+ to
diag ("Assignment 4");
my $result;
$result = "$first-$last"; is ($result, "
+a-e");
$result = "$first@{['-']}$last"; is ($result, "
+a-e");
$result = $first . '-' . $last; is ($result, "
+a-e");
$result = join '-' => $first, $last; is ($result, "
+a-e");
$result = do { local $" = '-'; "@{[$first, $last]}" }; is ($result, "
+a-e");
$result = sprintf "%s%s%s", $first, '-', $last; is ($result, "
+a-e");
done_testing;