---
name: "Devel::ArgNames"
section: "3pm"
platform: "linux"
package: "libdevel-argnames-perl"
version: "0.03-3"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Devel::ArgNames"
---

# Devel::ArgNames(3pm)

Figure out the names of variables passed into subroutines.

## NAME

Devel::ArgNames - Figure out the names of variables passed into subroutines.

## SYNOPSIS

```
        use Devel::ArgNames;
        sub foo {
                warn "foo() called with arguments: "
                        . join(", ", map { defined() ? $_ : "<unknown>" } arg_names(@_) );
        }
        foo($bar, $gorch, $blah[4]);
```

## DESCRIPTION

When print-debugging code, you will often ind yourself going:

```
        print "\$foo is $foo, \$bar is $bar"
```

With this module, you can write a reusable subroutine easily:

```
        sub my_print_vars {
                my %vars;
                @vars{arg_names()} = @_;
                foreach my $var ( keys %vars ) {
                        warn "$var is $vars{$var}\n";
                }
        }
        my_print_vars($foo, $bar);
```

This module doesn't provide dumping facilities because there are too many to choose from. This is a DIY kit ;-)

## EXPORTS

- arg\_names \[ $level \]

  This function will return the names associated with the variables found on `@_`, at the level `$level`. If `$level` is not provided `"arg_names"`'s caller's caller will be used (`"$level == 2"` in that case).

## VERSION CONTROL

This module is maintained using Darcs. You can get the latest version from \<http://nothingmuch.woobling.org/Devel-ArgNames/\>, and use `"darcs send"` to commit changes.

## SEE ALSO

Data::Dumper::Simple, DB, Devel::Caller, Devel::Caller::Perl, PadWalker.

## AUTHORS

Ran Eilam

Yuval Kogman \<nothingmuch@woobling.org\>

## COPYRIGHT

```
        Copyright (c) 2007 Yuval Kogman. All rights reserved
        This program is free software; you can redistribute
        it and/or modify it under the same terms as Perl itself.
```
