#!/usr/bin/perl use warnings; use strict; my $mode = fetch('Enter mode', 1); while (my $raw_wwn = fetch($mode eq 'a' ? "wwn (no ':')" : "wwn with ':'")) { if ($mode eq 'a') { if ($raw_wwn =~ /[^0-9a-fA-F]{16}$/) { print "Invalid Length Or Incorrect Format\n"; } else { print join (":", unpack ("(a2)*", lc ($raw_wwn))), "\n"; } next; } if ($raw_wwn =~ /[^:a-fA-F0-9]{23}$/) { print "Invalid Length Or Incorrect Format\n"; next; } $raw_wwn =~ s/://g; print "$raw_wwn\n"; } sub fetch { my ($prompt, $key) = @_; $prompt .= ' or q to quit' if $prompt; while (1) { print <; chomp $answer; exit if $answer eq 'q'; return $answer if $key && $answer =~ /^[ab]$/; return $answer if ! $key; print qq{"$answer" is not a valid mode.\n\n}; } }