http://www.perlmonks.org?node_id=1005458


in reply to Regex to compare (if) two strings (Uniquely - I will explain inside)

G'day chickenlips,

Here's a solution using index and splice. (Obviously, you'll need to use your code to generate the random word - I've just allowed entering it from the command line for testing purposes.)

$ perl -Mstrict -Mwarnings -E ' print q{Random word: }; RAND: while (my $randword = <>) { chomp $randword; say "Input words using only letters in: $randword"; INPUT: while (my $inword = <>) { chomp $inword; my @randchars = split q{} => $randword; my $char_count = 0; CHAR: for my $in_char (split q{}, $inword) { ++$char_count; my $pos = index join(q{} => @randchars), $in_char; if ($pos >= 0) { splice @randchars, $pos, 1; } else { say "Failed on char: $in_char (at position $char_count +)"; next INPUT; } } say "$inword OK"; } print q{Random word: }; } print "\n"; '

Here's a sample run:

Random word: qqwe Input words using only letters in: qqwe ew ew OK ewq ewq OK ewqq ewqq OK qewq qewq OK qqewq Failed on char: q (at position 5) qqqwe Failed on char: q (at position 3) Random word: aaaabcde Input words using only letters in: aaaabcde qwe Failed on char: q (at position 1) asd Failed on char: s (at position 2) abcdef Failed on char: f (at position 6) abcde abcde OK aaaab aaaab OK aaaaab Failed on char: a (at position 5) Random word: ^D

-- Ken

Replies are listed 'Best First'.
Re^2: Regex to compare (if) two strings (Uniquely - I will explain inside)
by Zambozo (Initiate) on Nov 30, 2012 at 18:17 UTC

    Label not found for "next INPUT" Why I am getting this error when I make mistake not to put a word that can not be created from the provided letters

      Can you show what you did to get this error? I can't replicate your problem.

      Echoing ++frozenwithjoy's comments, you'll need to show under what circumstances this isn't working for you. Please provide (within <code>...</code> tags) exact input, output and any error or warning messages - details for doing this can be found in: How do I post a question effectively?

      -- Ken