Amit Saxena wrote:
Hi Aruna
The solution
my $invexcl = "\x{00A1}";
my $atsign = "\x{0040}";
$mailreci =~ s/(\w+)$invexcl(\w+)/$1$atsign$2/g;
works fine.
However that assumes that you know the control character to be substituted.
If the file contains lots of control characters and if the requirement
is to remove all of them or to
substitute all of them with some ascii character etc, my solution is
preferred.
By the way, how do you find the octal / hexadecimal code of control
character that appears in the file.
I use UNIX "ob -bc" command for the same but even that is also
cumbersome if there are many lines
and many control charcters.
Regards,
Amit Saxena
On Mon, Jun 30, 2008 at 7:05 PM, Aruna Goke <[EMAIL PROTECTED]
<mailto:[EMAIL PROTECTED]>> wrote:
Amit Saxena wrote:
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]
<mailto:[EMAIL PROTECTED]> <mailto:[EMAIL PROTECTED]
<mailto:[EMAIL PROTECTED]>>> wrote:
David Romero wrote:
use a regular expression
my $email = 'user!dominio.com <http://dominio.com>
<http://dominio.com>';
$email =~ s/!/@/g;
###Result [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>
<mailto:[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>>
http://www.troubleshooters.com/codecorn/littperl/perlreg.htm
On Thu, Jun 26, 2008 at 1:35 PM, Aruna Goke
<[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>
<mailto:[EMAIL PROTECTED] <mailto:[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 <http://ontng.com>
<http://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 <http://ontng.com>
<http://ontng.com>,test,Love my
test message] [udh:0:]
2008-06-26 17:27:17 SMS request sender:+23422019122
request:
'maruna!ontng.com <http://ontng.com>
<http://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 <http://ontng.com>
<http://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 <http://ontng.com>
<http://ontng.com> Subject: test
Message: Love my test message sender :
[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>
<mailto:[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>>
What i want to achieve is to translate the to address
back to
[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>
<mailto:[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>> instaed of
maruna¡ontng.com <http://ontng.com> <http://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 <http://ontng.com>
<http://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]
<mailto:[EMAIL PROTECTED]>
<mailto:[EMAIL PROTECTED]
<mailto:[EMAIL PROTECTED]>>
For additional commands, e-mail:
[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>
<mailto:[EMAIL PROTECTED]
<mailto:[EMAIL PROTECTED]>>
http://learn.perl.org/
its not an exclamation mark but inverted exclammation mark.
-- To unsubscribe, e-mail: [EMAIL PROTECTED]
<mailto:[EMAIL PROTECTED]>
<mailto:[EMAIL PROTECTED]
<mailto:[EMAIL PROTECTED]>>
For additional commands, e-mail: [EMAIL PROTECTED]
<mailto:[EMAIL PROTECTED]>
<mailto:[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>>
http://learn.perl.org/
my $invexcl = "\x{00A1}";
my $atsign = "\x{0040}";
$mailreci =~ s/(\w+)$invexcl(\w+)/$1$atsign$2/g;
I have used that above code to do the conversion and it seems to
work now.
Goksie
your solution does not work because the character in question is an
inverted exclamation mark not exclamation mark itself.
Thanks
Goksie
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/