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/ > > > -- David Romero www.factufacil.com.mx