Roger that Vector, Victor... :)
I now have:
if (@ARGV && $ARGV[0] ne "-u") {
print "\nInvalid option.\n";
die "usage: lamencrypt.pl [option] (-u decrypts)\n";
}
print "\nEnter string to translate: ";
chomp(my $x = <STDIN>);
my @output = foo($x);
sub foo {
my $x = shift;
if (@ARGV && @ARGV[0] =~ /-u/) {
vec($x, $_ - 1, 8) -= $_ for 1..length($x);
}
else {
vec($x, $_ - 1, 8) += $_ for 1..length($x);
}
return $x;
}
print "\nLamely encrypted: ";
print "@output\n";
BTW, I tried to use the ternary operator ?: , as in:
@ARGV && @ARGV[0] =~ /-u/ ? vec($x, $_ -1, 8) -= $_ for 1..length($x)
+: vec($x, $_ -1, 8) += $_ for 1..length($x);
...but it aborted due to a syntax error near "$_ for". I tried declaring local $_, because I thought perhaps $_ was being clobbered, but it didn't help. Can anyone tell me why that didn't work? |