Question: I'm sending a subroutine a hash, and fetching it with `my($arg_ref) = @_;`

But what exactly is `%$arg_ref`? Is `%$` dereferencing the hash?

Answer: 
A good brief introduction to references (creating them and using them) in Perl is `perldoc perfeftut`. You can also [read it online](http://perldoc.perl.org/perlreftut.html) (or get it as a pdf). (It talks more about references in complex data structures than in terms of passing in and out of subroutines, but the syntax is the same.)
Since it's somewhat clear this construct is being used to provide a hash reference as a list of named arguments to a sub it should also be noted that this

```
sub foo {
  my ($arg_ref) = @_;
  # do something with $arg_ref->{keys}
}

```

may be overkill as opposed to just unpacking @\_

```
sub bar {
  my ($a, $b, $c) = @_;
  return $c / ( $a * $b );
}

```

Depending on how complex the argument list is.