Try

$email =~ s/[[:cntrl:]]/@/g;

instead of

$email =~ s/!/@/g;

Infact try this in the entire file.

Note :- This is on the assumption that there are no other control characters
in the input file.

On Fri, Jun 27, 2008 at 2:51 AM, Aruna Goke <[EMAIL PROTECTED]> wrote:

> David Romero wrote:
>
>> use a regular expression
>>
>> my $email = 'user!dominio.com';
>> $email =~ s/!/@/g;
>> ###Result [EMAIL PROTECTED]
>>
>> http://www.troubleshooters.com/codecorn/littperl/perlreg.htm
>>
>>
>> On Thu, Jun 26, 2008 at 1:35 PM, Aruna Goke <[EMAIL PROTECTED]> wrote:
>>
>>> hi,
>>>
>>> i have the this log from my sms gateway, however, the inverted
>>> exclamation
>>> mark was sent from the smsc as @.
>>>
>>> 2008-06-26 17:22:35 SMS request sender:+2342019122 request:
>>> 'maruna¡ontng.com,test,Love my test message' file answer: ''
>>> 2008-06-26 17:27:17 Receive SMS [SMSC:caxt] [SVC:] [ACT:] [BINF:]
>>> [from:+2342019122] [to:+2349191] [flags:-1:0:-1:0:-1]
>>> [msg:43:maruna!ontng.com,test,Love my test message] [udh:0:]
>>> 2008-06-26 17:27:17 SMS request sender:+23422019122 request:
>>> 'maruna!ontng.com,test,'Love my test message'file answer: ''
>>> 2008-06-26 17:34:15 Receive SMS [SMSC:caxt] [SVC:] [ACT:] [BINF:]
>>> [from:+2342019122] [to:+2349191] [flags:-1:0:-1:0:-1]
>>> [msg:43:maruna¡ontng.com,test,Love my test message] [udh:0:]
>>>
>>> I have my script that parse the file and extract as below
>>>
>>> To: maruna¡ontng.com Subject: test Message: Love my test message  sender
>>> :
>>> [EMAIL PROTECTED]
>>>
>>>
>>> What i want to achieve is to translate the to address back to
>>> [EMAIL PROTECTED] instaed of maruna¡ontng.com.
>>>
>>> when i checked through, i discover that it is inverted exclamation mark
>>> with
>>> character code 00A1 from unicode(hex) of latin-1 subset. I need this
>>> translated to @, any help will be appreciated
>>>
>>>
>>> my script is as below
>>>
>>> #!/usr/bin/perl
>>>
>>> use strict;
>>> use warnings;
>>> use File::Tail;
>>> use Mail::Sender;
>>>
>>>
>>> # the access.log is read and the following, recepient is extracted.
>>>
>>> my $name = "/var/log/bulksms/sms_access.log";
>>> my ($mailreci, $mailsubj, @sms, $mailmsg, $mailsend, $sendee, $sender,
>>> $msg,
>>> $domain);
>>> $domain = 'ontng.com';
>>> open my $file, '<', $name or die "could not open $name: $!";
>>> $file=File::Tail->new(name=>$name, maxinterval=>3, adjustafter=>5);
>>> while (defined($_=$file->read))
>>>               {
>>>       @sms = split/\[/;
>>>       next unless $sms[6]=~/to:\+2349191\]/;
>>>       $sendee = $sms[5];
>>>       $sendee =~ s/from:\+(\d+)\]/$1/;
>>>       $sendee = "[EMAIL PROTECTED]";
>>>       $msg = $sms[8];
>>>       $msg = (split/:/, $msg)[-1];
>>>       $msg =~ s/(\w+)\s?\]/$1/;
>>> #       i need only sender and $msg
>>>       ($mailreci, $mailsubj, $mailmsg) = (split/,/, $msg, 3)[0..2];
>>>
>>>       print  "To: $mailreci Subject: $mailsubj Message: $mailmsg sender :
>>> $sendee\n";
>>>
>>>    }
>>>
>>>
>>>
>>>
>>> --
>>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>>> For additional commands, e-mail: [EMAIL PROTECTED]
>>> http://learn.perl.org/
>>>
>>>
>>>
>>>
>>
>>
>>
> its not an exclamation mark but inverted exclammation mark.
>
>
>
>
> --
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> http://learn.perl.org/
>
>
>

Reply via email to