use warnings; use strict; my $cipher = shift; my $key = shift; open( my $cipher_fh, $cipher ) or die $!; open( my $key_fh, $key ) or die $!; my $buffer_length = 4_096; while ( sysread( $cipher_fh, my $cipher_text, $buffer_length, ) && sysread( $key_fh, my $key_text, $buffer_length, ) ) { print $cipher_text ^ $key_text; }