Sponsored Content
Top Forums UNIX for Dummies Questions & Answers PERL pattern matching in a file Post 302523744 by Skrynesaver on Thursday 19th of May 2011 03:58:57 PM
Old 05-19-2011
OK, with that in mind try the following
Code:
#!/usr/bin/perl

use strict;
use warnings;

open (my $in , '<', 'input.txt')|| die "Couldn't open input.txt\n\t$!";
open (my $yes, '>', 'accepted.txt')|| die "Couldn't open accepted.txt\n\t$!";
open (my $no , '>', 'rejected.txt')|| die "Couldn't open rejected.txt\n\t$!";
my @regexen=(qr'(^[0-9a-zA-Z]+$)',qr'(^[0-9]+$)',qr'(^[MF]$)');
while(<$in>){
        my $valid=1;
        my @fields = split(/\|/, $_);
        for (0..$#fields){
                if ($fields[$_]=~$regexen[$_]){
                        $fields[$_]=$1;
                }
                else {
                        $fields[$_]="";
                        $valid=0;
                }
        }
        print $yes join('|', @fields),"\n";
        if (! $valid){
                print $no $_;
        }
}
close($yes);
close($no);
close($in);
print "The valid fields in each record from input.txt are in the file accepted.txt and the invalid are in rejects.txt\n";
exit;


Last edited by Skrynesaver; 05-20-2011 at 02:22 AM.. Reason: Re-wrote using quoted regex array
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

perl pattern matching

hi i am trying to get digits inside brackes from file , whose structure is defined below CREATE TABLE TELM (SOC_NO CHAR (3) NOT NULL, TXN_AMOUNT NUMBER (17,3) SIGN_ON_TIME CHAR (8) TELLER_APP_LIMIT NUMBER (17,3) FIL01 ... (2 Replies)
Discussion started by: zedex
2 Replies

2. Shell Programming and Scripting

Perl Pattern Matching !!! Help

Hello I got the below one from in one of this forums For Ex: Loading File System Networking in nature now i need to extract the patterns between the words File and Networking : i.e. sample output: System cmd used : cat <file> | sed 's/.*File //' | sed 's/Closing.*$//' Actually... (0 Replies)
Discussion started by: maxmave
0 Replies

3. Shell Programming and Scripting

Perl -Pattern Matching help..!

Hi, I got doubt in Pattern matching, could you tell me how the following differs in action ?? if ( $line1==/$line2/ ) if ( $line1=~/$line2/ ) if ( $line1=~m/$line2/) What is the significance of '~' in matching. Thanks in advance CoolBhai (5 Replies)
Discussion started by: coolbhai
5 Replies

4. Shell Programming and Scripting

Perl Pattern Matching

Hello experts, I have a file containing the following text(shortened here). File Begin ---------- < # Billboard.d3fc1302a677.imagePath=S:\\efcm_T4 < Billboard.d3fc1302a677.imagePath=S:\\efcm_T4 --- > # Billboard.d3fc1302a677.imagePath=S:\\efcm_Cassini >... (2 Replies)
Discussion started by: nmattam
2 Replies

5. Shell Programming and Scripting

Perl pattern matching!!

Hi experts, I have many occurances of the following headers in a file. I need to grep for the word changed/inserted in the header, calculate the difference between the two numbers and list the count incrementally. Headers in a file look like this: ------------------- ---------------------... (6 Replies)
Discussion started by: nmattam
6 Replies

6. Shell Programming and Scripting

Perl Pattern matching...

I am doing a file patterhn matching for a text file in PERL I am using this,,, but it says that no file is found $filepattern = '\d{1,4}.*A0NW9693.NDM.HBIDT.*.AD34XADJ.txt'; Can anyone help me out with Perl Pattern Matching concepts and how to do pattern matching for this txt file:... (4 Replies)
Discussion started by: msrahman
4 Replies

7. Shell Programming and Scripting

Pattern Matching in PERL

I have a 2 files in .gz format and it consists of 5 million lines the format of the file would be gzcat file1.gz | more abcde aerere ffgh56 .. .. 12345 gzcat file2.gz | more abcde , 12345 , 67890, ffgh56 , 45623 ,12334 whatever the string is in the file1 should be matched... (3 Replies)
Discussion started by: aravindj80
3 Replies

8. Shell Programming and Scripting

Need help with perl pattern matching

My log file looks as given below, its actually a huge file around 1 GB and these are some of the line: conn=5368758 op=10628050 msgId=64 - RESULT err=0 tag=101 nentries=1 etime=0 conn=7462122 op=-1 msgId=-1 - fd=247 slot=247 LDAPS connection from 10.13.18.12:37645 to 10.18.6.45 conn=7462122... (5 Replies)
Discussion started by: sags007_99
5 Replies

9. Shell Programming and Scripting

Pattern matching in Perl

Hi, I have a list of IP, eg : 192.168.0.15 192.168.0.24 192.168.2.110 192.168.2.200 And I would like the shortest pattern who match with '192.168.0' and '192.168.2' (without the last dot and number). (7 Replies)
Discussion started by: X-Or
7 Replies

10. Shell Programming and Scripting

Perl - Use of *? in Matching Pattern

I am using Perl version 5.8.4 and trying to understand the use of regular expression. Following is my code and output. $string = "Perl is a\nScripting language"; ($start) = ($string =~ /\A(.*?) /); @lines = ($string =~ /^(.*?) /gm); print "First Word (using \\A): $start\n","Line... (4 Replies)
Discussion started by: jnrohit2k
4 Replies
Data::FormValidator::Results(3pm)			User Contributed Perl Documentation			 Data::FormValidator::Results(3pm)

NAME
Data::FormValidator::Results - results of form input validation. SYNOPSIS
my $results = Data::FormValidator->check(\%input_hash, \%dfv_profile); # Print the name of missing fields if ( $results->has_missing ) { for my $f ( $results->missing ) { print $f, " is missing "; } } # Print the name of invalid fields if ( $results->has_invalid ) { for my $f ( $results->invalid ) { print $f, " is invalid: ", $results->invalid( $f ), " "; } } # Print unknown fields if ( $results->has_unknown ) { for my $f ( $results->unknown ) { print $f, " is unknown "; } } # Print valid fields for my $f ( $results->valid() ) { print $f, " = ", $results->valid( $f ), " "; } DESCRIPTION
This object is returned by the Data::FormValidator "check" method. It can be queried for information about the validation results. success(); This method returns true if there were no invalid or missing fields, else it returns false. As a shorthand, When the $results object is used in boolean context, it is overloaded to use the value of success() instead. That allows creation of a syntax like this one used in "CGI::Application::Plugin::ValidateRM": my $results = $self->check_rm('form_display','_form_profile') || return $self->dfv_error_page; valid( [[field] [, value]] ); In an array context with no arguments, it returns the list of fields which contain valid values: @all_valid_field_names = $r->valid; In a scalar context with no arguments, it returns an hash reference which contains the valid fields as keys and their input as values: $all_valid_href = $r->valid; If called with one argument in scalar context, it returns the value of that "field" if it contains valid data, "undef" otherwise. The value will be an array ref if the field had multiple values: $value = $r->valid('field'); If called with one argument in array context, it returns the values of "field" as an array: @values = $r->valid('field'); If called with two arguments, it sets "field" to "value" and returns "value". This form is useful to alter the results from within some constraints. See the Data::FormValidator::Constraints documentation. $new_value = $r->valid('field',$new_value); has_missing() This method returns true if the results contain missing fields. missing( [field] ) In an array context it returns the list of fields which are missing. In a scalar context, it returns an array reference to the list of missing fields. If called with an argument, it returns true if that "field" is missing, undef otherwise. has_invalid() This method returns true if the results contain fields with invalid data. invalid( [field] ) In an array context, it returns the list of fields which contains invalid value. In a scalar context, it returns an hash reference which contains the invalid fields as keys, and references to arrays of failed constraints as values. If called with an argument, it returns the reference to an array of failed constraints for "field". has_unknown() This method returns true if the results contain unknown fields. unknown( [field] ) In an array context, it returns the list of fields which are unknown. In a scalar context, it returns an hash reference which contains the unknown fields and their values. If called with an argument, it returns the value of that "field" if it is unknown, undef otherwise. msgs([config parameters]) This method returns a hash reference to error messages. The exact format is determined by parameters in the "msgs" area of the validation profile, described in the Data::FormValidator documentation. NOTE: the "msgs" parameter in the profile can take a code reference as a value, allowing complete control of how messages are generated. If such a code reference was provided there, it will be called here instead of the usual processing, described below. It will receive as arguments the Data::FormValidator::Results object and a hash reference of control parameters. The hashref passed in should contain the same options that you can define in the validation profile. This allows you to separate the controls for message display from the rest of the profile. While validation profiles may be different for every form, you may wish to format messages the same way across many projects. Controls passed into the <msgs> method will be applied first, followed by ones applied in the profile. This allows you to keep the controls you pass to "msgs" as "global" and override them in a specific profile if needed. meta() In a few cases, a constraint may discover meta data that is useful to access later. For example, when using Data::FormValidator::Constraints::Upload, several bits of meta data are discovered about files in the process of validating. These can include "bytes", "width", "height" and "extension". The "meta()" function is used by constraint methods to set this data. It's also used to access this data. Here are some examples. # return all field names that have meta data my @fields = $results->meta(); # To retrieve all meta data for a field: $meta_href = $results->meta('img'); # Access a particular piece: $width = $results->meta('img')->{width}; Here's how to set some meta data. This is useful to know if you are writing your own complex constraint. $self->meta('img', { width => '50', height => '60', }); This function does not currently support multi-valued fields. If it does in the future, the above syntax will still work. SEE ALSO
Data::FormValidator, Data::FormValidator::Filters, Data::FormValidator::Constraints, Data::FormValidator::ConstraintsFactory AUTHOR
Author: Francis J. Lacoste <francis.lacoste@iNsu.COM> Maintainer: Mark Stosberg <mark@summersault.com> COPYRIGHT
Copyright (c) 1999,2000 iNsu Innovations Inc. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms as perl itself. perl v5.14.2 2011-11-25 Data::FormValidator::Results(3pm)
All times are GMT -4. The time now is 03:51 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy