$ cat passwd
root:x:0:0:ifeuu1 root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
noncom:x:0:0:cause RegEx Fail:/noncom:/bin/bash
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
####
#!/usr/bin/perl
# perl-grep4.pl
my $pattern = shift @ARGV;
my $regex = eval { qr/$pattern/ };
die "Check your pattern! $@" if $@;
while( <> )
{
if( m/$regex/ )
{
print "$_";
print "\t\t\$&: ",
substr( $_, $-[0], $+[0] - $-[0] ),
"\n";
foreach my $i ( 1 .. $#- )
{
print "\t\t\$$i: ",
substr( $_, $-[$i], $+[$i] - $-[$i] ),
"\n";
}
}
}
####
$ Test5.pl '(?##
PW:root:passwd:(?##
#!/usr/bin/perl
#use strict;
#use warnings;
use Text::ParseWords;
my ($RECORD, @FIELDS, $RE);
my $DFile="/home/infosec/data/RegEx";
open (DATA, "<$DFile") || die ("Cannot open DATA file \n");
my @LINES=;
my $tLINES=@LINES;
foreach $RECORD (@LINES[0..$tLINES-1]) {
@FIELDS=split(/:/, "$RECORD");
my $TNAME=$FIELDS[0];
my $TVALU=$FIELDS[1];
my $TFILE=$FIELDS[2];
my $REGEX=$FIELDS[3];
chomp($REGEX);
my $regex = eval { qr/$REGEX/ };
print "$regex \n";
open (TFILE, "<$TFILE") || die ("Cannot open Test file \n");
while ()
{
if( m/$regex/ )
{
print "$_";
print "\t\t\$&: ",
substr( $_, $-[0], $+[0] - $-[0] ),
"\n";
foreach my $i ( 1 .. $#- )
{
print "\t\t\$$i: ",
substr( $_, $-[$i], $+[$i] - $-[$i] ),
"\n";
}
}
}
print "\n";
}
print "\n";
####
$ Test6.pl
root:x:0:0:ifeuu1 root:/root:/bin/bash
$&:
bin:x:1:1:bin:/bin:/sbin/nologin
$&:
noncom:x:0:0:cause RegEx Fail:/noncom:/bin/bash
$&:
daemon:x:2:2:daemon:/sbin:/sbin/nologin
$&:
adm:x:3:4:adm:/var/adm:/sbin/nologin
$&:
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
$&:
sync:x:5:0:sync:/sbin:/bin/sync
$&:
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
$&: