What are good alternatives to given/when (smartmatch ~~, experimental), and how do they compare?

Alternatives to the given/when construct in Perl provide a more robust and predictable means of handling conditional logic. These alternatives help developers avoid pitfalls associated with smartmatching while maintaining clear and concise code.
Perl, given, when, alternatives, smartmatch, conditional logic, programming, code examples
# Alternative to given/when in Perl
use strict;
use warnings;

my $value = 3;

# Using if/elsif/else
if ($value == 1) {
    print "Value is one\n";
} elsif ($value == 2) {
    print "Value is two\n";
} elsif ($value == 3) {
    print "Value is three\n";
} else {
    print "Value is something else\n";
}

# Or using a hash for a lookup table
my %responses = (
    1 => "Value is one",
    2 => "Value is two",
    3 => "Value is three"
);

print exists $responses{$value} ? $responses{$value} : "Value is something else";
    

Perl given when alternatives smartmatch conditional logic programming code examples