local($/) = "\n\n"; while (<>) { # read one acl stanza at a time open(TEMP, ">/tmp/acl"); print TEMP; close(TEMP); # Determine $filename from $_ if (m/^# file:\s*(.*)/m) { my $filename = $1; system("setacl", "-f", "/tmp/acl", "-r", "-s", $filename); } else { warn "unable to determine target filename in:\n$_\n"; } }