The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!perl
use strict;
use warnings;
use Cwd qw/cwd/;
use File::pushd qw/tempd pushd/;

print "Starting directory:\n  " . cwd() . "\n";

# tempd() is equivalent to pushd( File::Temp::tempdir )
{
    my $tempdir = tempd();
    print "Directory after tempd():\n  " . cwd() . "\n";

    mkdir "new_dir";

    {
        my $new_dir = pushd "new_dir";
        print "Directory after pushd('new_dir'):\n  " . cwd() . "\n";
    }

    print "Directory after pushd object destroyed:\n  " . cwd() . "\n";
}

print "Directory after tempd object destroyed:\n  " . cwd() . "\n";