#!/usr/bin/perl # http://perlmonks.org/?node_id=1193719 use strict; use warnings; use File::Find; use File::Slurp qw( edit_file_lines ); my $directory = 'some/test/'; find sub { my %u; -f and /\.txt$/ and edit_file_lines sub { $_ x= !$u{$_}++ }, $_ }, $directory;