in reply to How to best filter/direct data based on input structure?
Hi Chris.
This is not a stupid question. Consider using a couple of modules for the validation tasks, viz., Regexp::Common (for IP addresses) and Data::Validate::Domain.
Given these, you can do the following:
use strict; use warnings; use Regexp::Common qw/net/; use Data::Validate::Domain qw(is_domain); my $form = 'This is my form stuff.'; while ( my $input = <DATA> ) { chomp $input; my $results = ( $input =~ /$RE{net}{IPv4}/ or is_domain($input) ) +? $input : $form; print "Input: $input; Results: $results\n"; } __DATA__ 66.39.54.27 perlmonks.com 555.666.777.999 192.168.0.1 %^&.#@!.com
Output:
Input: 66.39.54.27; Results: 66.39.54.27 Input: ; Results: This is my form stuff. Input: perlmonks.com; Results: perlmonks.com Input: 555.666.777.999; Results: This is my form stuff. Input: 192.168.0.1; Results: 192.168.0.1 Input: %^&.#@!.com; Results: This is my form stuff.
The validation results are generated using the ternary operator and the modules' offerings: $input is returned if it's a valid IP or domain; anything else returns $form.
Hope this helps!
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: How to best filter/direct data based on input structure?
by taint (Chaplain) on Nov 02, 2013 at 03:49 UTC | |
by Kenosis (Priest) on Nov 02, 2013 at 04:18 UTC | |
by taint (Chaplain) on Nov 02, 2013 at 04:42 UTC | |
by taint (Chaplain) on Nov 02, 2013 at 06:45 UTC |