#!/usr/bin/perl -w use strict; if(@ARGV < 3) { print "Usage: $0 \n"; exit(0); } my $key = $ARGV[0]; open(IN, $ARGV[1]) or die "Can't read $ARGV[1]: $!\n"; open(OUT, ">$ARGV[2]") or die "Can't wrote $ARGV[2]: $!\n"; binmode(IN); binmode(OUT); my $in; while( sysread(IN,$in,length($key)) ) { print OUT $in^substr($key,0,length($in)); } close(IN); close(OUT);