I think you mean $email = $hash{key}[0]{email}; At least, that's what your steps describe.
my %hash;
# Inputed data:
my $email = 'email@example.com';
my $timestamp = time;
# Adding a record:
my $record = {
email => $email,
timtstamp => timestamp,
};
push(@{$hash{key}}, $record);
# Example of getting a value:
print("email for first record: ", $hash{key}[0]{email}, "\n");
"@{ $hash{key} }" means "the array at key 'key' in the hash '%hash'". Auto-vivification will create the array for us if it doesn't already exist.