Rob Dixon wrote:
> Mathew Snyder wrote:
>> With all the help I've received I've been able to get this working.
>> This is my
>> text:
>> #!/usr/bin/perl
>>
>> use warnings;
>> use strict;
>> use WWW::Mechanize;
>> use HTML::TokeParser;
>>
>> my $username = 'msnyder';
>> my $password = 'xxxxxxx';
>> my $status = 'open';
>>
>> my $agent = WWW::Mechanize->new();
>> $agent->get('https://rt.ops.xxxxxxxxxxx.com/');
>>
>> $agent->submit_form(
>> form_name => 'login',
>> fields => {
>> 'user' => $username,
>> 'pass' => $password,
>> }
>> );
>>
>> $agent->follow_link(text => "Tickets");
>>
>> $agent->submit_form(
>> form_name => 'BuildQuery',
>> fields => {
>> 'ValueOfStatus' => $status,
>> 'ValueOfActor' => $username,
>> },
>> button => 'DoSearch'
>> );
>>
>> my $data = $agent->content();
>> print $data;
>>
>>
>> What this will do is return to me HTML source with a list of work
>> tickets and
>> all pertinent, associated data. The purpose of setting this up is to
>> allow me
>> to pull out email addresses of any work ticket created as a result of
>> spam.
>>
>> For anyone not familiar with Request Tracker from Best Practical
>> Solutions, the
>> 'from' email address on any incoming email received by Request Tracker is
>> automatically turned into a user account. With the amount of spam
>> flying around
>> the the Net these days those user accounts add up.
>>
>> All those spam tickets are assigned to me so I can eliminate them and
>> the users
>> created as a result of them from our database. My goal is to parse
>> $data to
>> pull out all the email addresses which I will then sift through to
>> remove any
>> legitimate addresses.
>>
>> You'll notice I declare the use of HTML::TokeParser. This leads to my
>> next
>> question. Do I need to use that? Would it be simpler to just parse
>> the data
>> matching against a regex and put any matches into a file? I imagine I
>> don't
>> need to sift through all the HTML tags just to get to the email
>> addresses since
>> they are fairly easy to spot.
>
> Hi Mathew
>
> Ordinarily I would insist that you use a proper HTML parser, but I see
> no harm in
> searching for email addresses as their format is well defined. Use the
> Email::Address module, like this:
>
> use Email::Address;
>
> my @email = Email::Address->parse($agent->content);
> print $_->address, "\n" foreach @email;
>
> HTH,
>
> Rob
>
>
I don't know if maybe there is a bug in the Email::Address module or not. I've
changed nothing other than what you've suggested. Now I'm gettting a
Segmentation Fault.
Here's my code as it stands now:
#!/usr/bin/perl
use warnings;
use strict;
use WWW::Mechanize;
use Email::Address;
my $user = 'msnyder';
my $pass = 'xxxxxxx';
my $status = 'open';
my $queue = 'Security';
my $agent = WWW::Mechanize->new();
$agent->get('https://rt.ops.xxxxxxxxxxx.com/');
$agent->submit_form(
form_name => 'login',
fields => {
'user' => $user,
'pass' => $pass,
}
);
$agent->follow_link(text => "Tickets");
$agent->submit_form(
form_name => 'BuildQuery',
fields => {
'ValueOfStatus' => $status,
'ValueOfActor' => $user,
'ValueOfQueue' => $queue,
},
button => 'DoSearch'
);
my $data = $agent->content();
my @emails = Email::Address->parse($data);
foreach my $email (@emails){
print $email;
};
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>