sub do_exec { my ($cmd, $args) = @_; system("$cmd $args") == 0 or die "Command '$cmd' failed: $!"; } sub do_chdir { my ($dir) = @_; chdir $dir or die "Couldn't change dir to '$dir': $!"; } sub run { do_exec('foo', '--bar baz'); do_chdir('foobar'); do_exec('foo', '--bar baz2'); do_exec('foo2', '--bar baz'); do_chdir('..'); do_exec('bar', '--foo baz'); } run();