It's cute... Since the "secret" is concatenated with what the user entered, this will match if you get the same number separated by 4 characters (that's 3 digits and the \n in some combination).
It replaces that with a ? for the first position, and a * for the 2nd, with $2 (the 4 characters in between) in the middle. Then, the substitution is repeated as long as it succeeds, so if you have all 4 characters right, you get 4 *'s.
The 2nd substitution puts in +'s for any numbers that appear in both lines after the first substitutionwas done, which will get only numbers in the wrong place since all the ones in the right spots are already replaced with '*'.
The last print will print out any * or + in the string, telling you how many you have right or nearly right.
Very nice script... I like the cool uses of s/// and the print of the matches.
--
Mike |