Day08.pm (1031B) - raw
1 package Day08; 2 3 use strict; 4 use warnings; 5 use v5.32; 6 7 use Exporter qw( import ); 8 our @EXPORT = qw( part1 part2 ); 9 10 sub part1 { 11 my $string = shift; 12 $string =~ s/^"//; # remove beginning quote 13 $string =~ s/"$//; # remove trailing quote 14 my $backslash = qr/\\\\/; 15 my $double_quote = qr/\\\"/; 16 my $ascii = qr/\\x[0-9a-f]{2}/; 17 my $backslash_count = () = $string =~ m/$backslash/g; 18 my $double_quote_count = () = $string =~ m/$double_quote/g; 19 my $ascii_count = () = $string =~ m/$ascii/gi; 20 my $string_characters = 2 + length $string; 21 my $memory_characters = $string_characters - 2 - $backslash_count 22 - $double_quote_count - (3 * $ascii_count); 23 24 return $string_characters - $memory_characters; 25 } 26 27 sub part2 { 28 my $string = shift; 29 my $length = length $string; 30 $string =~ s|\\|\\\\|g; 31 $string =~ s|"|\\"|g; 32 return ( length $string ) + 2 - $length; 33 } 34 35 1;