#!/usr/bin/perl use strict; if(@ARGV < 3) { print "Usage: $0 \n"; exit(0); } my $key = $ARGV[0]; open(IN, $ARGV[1]) or die "Can't open infile"; open(OUT, ">$ARGV[2]") or die "Can't open outfile"; my $kp = 0; while() { for my $i (0..length($_)) { if($kp > length($key)) { $kp = 0; } my $kc = substr($key, $kp++, 1); my $char = substr($_, $i, 1); $char ^= $kc; print OUT $char; } } close(IN); close(OUT);