これって意味あるでしょうか?
open に失敗したら、自作のルーチンに引数でエラー文字列を渡したいんですが、
もしかすると、open に失敗した時点で die してしまうので print_error にすらいかないのでしょうか?

myopen( FH, 'test.txt' ) or print_error( $! );

sub myopen( $$ ) {
open( $_[0], $_[1] ) or return;
close( $_[0] );
}

sub print_error( $ ) {
print $_[0];
exit;
}