use POSIX 'tmpnam'; my $cmd = "cat /dev/null"; my $trace_file = tmpnam; system "strace -f -e trace=open -o $trace_file $cmd"; my %files = (); open TRACE, "<$trace_file"; while () { /^open\("(.*)", O_/ and $files{$1}++; } close TRACE; unlink $trace_file; print join "\n", sort keys %files;