perl -pe 'tr/a-zA-Z/n-za-mN-ZA-M/;' #### #!/usr/bin/perl use strict; use warnings; die "Run with argument." unless defined $ARGV[0]; my $file = $ARGV[0]; if ( $file =~ /\.enc/ ) { decrypt( $file ); } else { encrypt( $file ); } exit; sub encrypt { my $f = shift; my $enc = $f . '.enc'; files( $f, $enc ); } sub decrypt { my $f = shift; my $dec = $f; $dec =~ s/\.enc$/.dec/; files( $f, $dec ); } sub files { my ( $in_file, $out_file ) = @_; open my $in, '<', $in_file or die "Cannot read input file $in_file : $!\n"; open my $out, '>', $out_file or die "Cannot write to output file $out_file : $!\n"; rotate( $in, $out ); close $in; close $out or die "Failed to complete write to output file $out_file : $!\n"; } sub rotate { my ( $fh_in, $fh_out ) = @_; while ( my $text = <$fh_in> ) { $text =~ tr/a-zA-Z/n-za-mN-ZA-M/; print { $fh_out } $text; } } #### $ perl foo foo $ perl foo foo.enc $ diff foo foo.dec $