My example solution:
#!/usr/bin/perl use strict; my @certs; while(<DATA>) { push @certs, /\'([-.\w]+)\'/ if(/added/); } print join("\n", @certs), "\n"; __DATA__ Sep 12 17:30:02 nt-ca-na CA(Domain-CA): Certificate name 'jsmith.2048' + added to database. Sep 12 20:09:37 nt-ca-na CA(Domain-CA): Certificate name 'ksmith.2048' + added to database. Sep 12 21:25:30 nt-ca-na CA(Domain-CA): Certificate name 'ssmith.2048' + added to database.
Uses the default $_ instead of the problematic $var=<HANDLE> in a while ( which has a few though rare gotcha cases ). This avoids all the line =~ stuff which confuses what is going on.
uses push to add elements to the end of the array and the () matching in my RE to get exactly the text I wanted into the array ( the name without quotes ). Popping the quotes into the ()'s will add them to the text that is saved off if that is desired..
Used DATA handle so the example text could be in a functional example program. You would want to use your real filehandle on an open real file of course.
Used a statement modifier ( the if(/added/) ) since we want people to see that we are appending to an array inside a while loop, making the rule to append secondary to what is happening.
At the end @certs has the names added one per element in the array. There is a print to show that that is the case.
In reply to Re: Array Problem
by dga
in thread Array Problem
by dru145
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |