[32935] in Perl-Users-Digest
Perl-Users Digest, Issue: 4211 Volume: 11
daemon@ATHENA.MIT.EDU (Perl-Users Digest)
Wed May 14 10:08:13 2014
Date: Tue, 13 May 2014 11:09:06 -0700 (PDT)
From: Perl-Users Digest <Perl-Users-Request@ruby.OCE.ORST.EDU>
To: Perl-Users@ruby.OCE.ORST.EDU (Perl-Users Digest)
Perl-Users Digest Tue, 13 May 2014 Volume: 11 Number: 4211
Today's topics:
Re: grepping a list of patterns in a larger list <rvtol+usenet@xs4all.nl>
Help with an operator precedence (?) puzzle <news@lawshouse.org>
Re: Help with an operator precedence (?) puzzle (Tim McDaniel)
Re: Help with an operator precedence (?) puzzle <news@lawshouse.org>
Re: Help with an operator precedence (?) puzzle <uri@stemsystems.com>
Re: Help with an operator precedence (?) puzzle (Tim McDaniel)
Re: Help with an operator precedence (?) puzzle <news@lawshouse.org>
Re: Help with an operator precedence (?) puzzle (Tim McDaniel)
Re: More general programming than perl... <cartercc@gmail.com>
Re: Regexp to combine table cells <peter@makholm.net>
Re: Regexp to combine table cells <gamo@telecable.es>
Re: Regexp to combine table cells <ben.usenet@bsb.me.uk>
Re: Regexp to combine table cells (Tim McDaniel)
Re: Regexp to combine table cells <gamo@telecable.es>
Re: Regexp to combine table cells <gravitalsun@hotmail.foo>
Re: Regexp to combine table cells <bart@nijlen.com>
Re: Regexp to combine table cells <kaz@kylheku.com>
Social Media Optimization Services in Hyderabad,India | <webcolortech@gmail.com>
Digest Administrivia (Last modified: 6 Apr 01) (Perl-Users-Digest Admin)
----------------------------------------------------------------------
Date: Tue, 13 May 2014 17:43:08 +0200
From: "Dr.Ruud" <rvtol+usenet@xs4all.nl>
To: Udaykumar Kunapuli <ukunapul@gmail.com>
Subject: Re: grepping a list of patterns in a larger list
Message-Id: <53723D8C.4040108@xs4all.nl>
On 2014-05-06 05:17, Udaykumar Kunapuli wrote:
> I have 2 lists.
>
> As an example:
> @list1 = (1234, 345638, 3535, 93756387);
> @list2 = ("375539 Linux DONE", "1234 Linux DONE", "345638 Linux EXIT", "6384643 Linux RUN", "45234 Linux RUN", "3535 Linux DONE", "93756387 Linux DONE");
>
> I need to print out the list of elements in list2 where the first number part of the string does NOT exist in list1.
>
> I need to get a list3 from list2 where list3 looks like below
> @list3 = ("375539 Linux DONE", "6384643 Linux RUN", "45234 Linux RUN");
>
> None of the above first number parts in list3 exist in list1, which is how I want it to be.
>
> What would be the simplest way of doing this in Perl?
There are many ways, for example:
perl -Mstrict -wE'
my @list1 = (1234, 345638, 3535, 93756387);
my @list2 = ("375539 Linux DONE", "1234 Linux DONE"
, "345638 Linux EXIT", "6384643 Linux RUN", "45234 Linux RUN"
, "3535 Linux DONE", "93756387 Linux DONE");
my $re = join "|", @list1;
my @list3 = grep !/^(?:$re)\b/, @list2;
'
--
Ruud
------------------------------
Date: Mon, 12 May 2014 23:02:22 +0100
From: Henry Law <news@lawshouse.org>
Subject: Help with an operator precedence (?) puzzle
Message-Id: <mM2dna38mqJp2ezOnZ2dnUVZ8rOdnZ2d@giganews.com>
Perl 5.14 running on Ubuntu. I'm fairly sure that the answer to this is
operator precedence but I've looked at it and consulted perldoc until my
brain hurts and I can't work it out. Could someone explain? (And
perhaps suggest the best way to code this kind of construct).
This is a tiny extract from a subroutine, boiled down from a much larger
(and more useful) bit of code. If it finds an error it sets $@ and
returns undef.
#!/usr/bin/perl
use strict;
use warnings;
use 5.010;
sub tryit {
my ( $user, $conf, $parms ) = @_;
$@ = "reset_user: invalid parameters\n" and return if $parms==1;
$@ = "reset_user: '$user' doesn't exist\n" and return if $parms==2;
}
If I compile it Perl warns me: "Found = in conditional, should be == at
tryout.pl line 8."
But line 9 is virtually identical, except for the presence of an
interpolated variable, and it compiles clean! Blowed if I know why.
Aside from explaining what I've misunderstood, what's the most Perlish
way to set a variable and return, all in one statement? I know I can do
it in two, in a block, but it's so lumpen, and I'm sure I've seen other
people's code where they do this kind of thing.
--
Henry Law Manchester, England
------------------------------
Date: Mon, 12 May 2014 22:46:51 +0000 (UTC)
From: tmcd@panix.com (Tim McDaniel)
Subject: Re: Help with an operator precedence (?) puzzle
Message-Id: <lkrj0r$jlb$1@reader1.panix.com>
In article <mM2dna38mqJp2ezOnZ2dnUVZ8rOdnZ2d@giganews.com>,
Henry Law <news@lawshouse.org> wrote:
>#!/usr/bin/perl
>use strict;
>use warnings;
>use 5.010;
>
>sub tryit {
> my ( $user, $conf, $parms ) = @_;
> $@ = "reset_user: invalid parameters\n" and return if $parms==1;
> $@ = "reset_user: '$user' doesn't exist\n" and return if $parms==2;
>}
I think you should stop dicking with the builtin $@ variable. "man
perlvar" says what happens when a few builtin variables are assigned
to, but $@ isn't one of them, so I see no guarantee that it will work.
>If I compile it Perl warns me: "Found = in conditional, should be == at
>tryout.pl line 8."
Well, yeah. "and" takes two operands, and the first operand is
evaluaed in a boolean context (a conditional), and
$@ = "reset_user: invalid parameters\n"
indeed has = in a conditional, as stated. A pirated Programming
Perl says "the final value of the variable on the left is returned as
the value of the assignment as a whole", so the LHS is always true, so
it works, for some value of "works".
$@ = 3+4 and return if $parms==1;
produces the same warning.
>But line 9 is virtually identical, except for the presence of an
>interpolated variable, and it compiles clean! Blowed if I know why.
At a guess, the "Found = in conditional" warning is a heuristic that
gets confused somehow by an interpolated string in particular. That
is, it's the lack of a message line 9 that is the problematic one, not
line 8.
>Aside from explaining what I've misunderstood, what's the most Perlish
>way to set a variable and return, all in one statement?
Is there a problem with the comma operator?
$frog = "green", return if blort();
But personally I don't like flow of control in an expression, so I'd
just write
if (blort()) {
$frog = "green";
return;
}
--
Tim McDaniel, tmcd@panix.com
------------------------------
Date: Tue, 13 May 2014 00:19:30 +0100
From: Henry Law <news@lawshouse.org>
Subject: Re: Help with an operator precedence (?) puzzle
Message-Id: <pc6dndI9iL6ayuzOnZ2dnUVZ7vydnZ2d@giganews.com>
On 12/05/14 23:46, Tim McDaniel wrote:
> I think you should stop dicking with the builtin $@ variable.
Umm; I thought that $@ was specifically for returning stuff from a
subroutine that had used its "proper" return value for success/failure.
I know that lots of CPAN modules use it in that way.
>> >Aside from explaining what I've misunderstood, what's the most Perlish
>> >way to set a variable and return, all in one statement?
> Is there a problem with the comma operator?
> $frog = "green", return if blort();
Thank you. The comma operator in this context isn't part of my Perl
"dialect" but I can see that that needs to change.
--
Henry Law Manchester, England
------------------------------
Date: Mon, 12 May 2014 23:29:57 -0400
From: Uri Guttman <uri@stemsystems.com>
Subject: Re: Help with an operator precedence (?) puzzle
Message-Id: <87fvke5pai.fsf@stemsystems.com>
>>>>> "HL" == Henry Law <news@lawshouse.org> writes:
HL> On 12/05/14 23:46, Tim McDaniel wrote:
>> I think you should stop dicking with the builtin $@ variable.
HL> Umm; I thought that $@ was specifically for returning stuff from a
HL> subroutine that had used its "proper" return value for
HL> success/failure. I know that lots of CPAN modules use it in that
HL> way.
from perldoc perlvar:
$@ The Perl syntax error message from the last "eval()" operator.
If $@ is the null string, the last "eval()" parsed and executed
correctly (although the operations you invoked may have failed
in the normal fashion).
so where does it say you should assign into $@? i bet those modules you
claim do it are just dealing with passing back other errors found from
eval and related things. it is not how you should be passing back errors
(and globals are a poor idea for that too).
you can return errors directly with return if you api is designed to
know when you have good data or for an error return undef. there are
other variations. or you can just die which will set $@ correctly and
let the caller trap that with eval or try/catch (from a module).
uri
------------------------------
Date: Tue, 13 May 2014 03:32:01 +0000 (UTC)
From: tmcd@panix.com (Tim McDaniel)
Subject: Re: Help with an operator precedence (?) puzzle
Message-Id: <lks3nh$t45$1@reader1.panix.com>
In article <pc6dndI9iL6ayuzOnZ2dnUVZ7vydnZ2d@giganews.com>,
Henry Law <news@lawshouse.org> wrote:
>On 12/05/14 23:46, Tim McDaniel wrote:
>> I think you should stop dicking with the builtin $@ variable.
>
>Umm; I thought that $@ was specifically for returning stuff from a
>subroutine that had used its "proper" return value for
>success/failure. I know that lots of CPAN modules use it in that
>way.
Hm! I just did "cd /usr/share/perl/5.14.2" and
find . -type f -name '*.p[lm]' -print0 | xargs -0 grep '\$@ *=' | wc
find . -type f -name '*.p[lm]' -print0 | xargs -0 grep '\$@' | wc
There were 643 lines that referred to $@. But since $@ is set by
die(), implicitly setting $@, catching die() using eval(), and
examining the value of $@ are standard techniques for exception
processing.
There were 42 matching the first pattern, but most of them were like
"$@ =~ m/.../", doing a match instead of altering it.
But I found an assignment or s/// in
Net/FTP.pm
Test/More.pm
Module/Build/Base.pm
CGI.pm
Pod/ParseUtils.pm
AutoLoader.pm
CPAN/Distribution.pm
CPAN/Distroprefs.pm
SelfLoader.pm
Text/Balanced.pm
perl5db.pl
Locale/Maketext.pm
Archive/Tar.pm
Nevertheless, I still think you shouldn't *set* $@ except by using
Try::Tiny or the like, or in serious need. I've never seen code
setting $@, and only seen it referring to $@ when using die/eval.
$@ is a global variable and is modified by die() and fatal errors, so
those can be drawbacks.
But if someone experienced like Ben has a different opinion, I'd like
to hear it.
--
Tim McDaniel, tmcd@panix.com
------------------------------
Date: Tue, 13 May 2014 09:57:07 +0100
From: Henry Law <news@lawshouse.org>
Subject: Re: Help with an operator precedence (?) puzzle
Message-Id: <fcGdnfxQhMr3Q-zOnZ2dnUVZ8tidnZ2d@giganews.com>
On 13/05/14 04:29, Uri Guttman wrote:
> if you api is designed to
> know when you have good data or for an error return undef.
Well, that's what I'm trying to do. But if I have a sub which has
multiple different ways of going wrong, how is the caller to find out
what the problem was?
For example, the boiled-down sub I posted at the top of this thread is
actually part of a "reset user's home directory" sub; it can fail
because the caller isn't allowed to do it, because the user doesn't
exist, because it's Tuesday ... Returning undef isn't helpful. So
what's the right way to do this?
--
Henry Law Manchester, England
------------------------------
Date: Tue, 13 May 2014 16:40:15 +0000 (UTC)
From: tmcd@panix.com (Tim McDaniel)
Subject: Re: Help with an operator precedence (?) puzzle
Message-Id: <lkthtf$kqb$1@reader1.panix.com>
In article <fcGdnfxQhMr3Q-zOnZ2dnUVZ8tidnZ2d@giganews.com>,
Henry Law <news@lawshouse.org> wrote:
>On 13/05/14 04:29, Uri Guttman wrote:
>> if you api is designed to
>> know when you have good data or for an error return undef.
>
>Well, that's what I'm trying to do. But if I have a sub which has
>multiple different ways of going wrong, how is the caller to find out
>what the problem was?
Off the top of my head.
(0) Your sub can die on error. By default, that kills the program.
You document this and say that, if the caller doesn't want to die,
they should use Try::Tiny or something like it to catch the error.
Then they can look at $@ for the exact reason if that's useful.
Really, error return codes are inherently unsafe -- it takes positive
effort to detect them and do something sensible. If you overlook a
die, you WILL learn about it. Failsafe.
But it's a pain if the caller usually wants to continue.
(1) UNIX has the convention of processes exiting with 0 if all is
well, various non-zero codes if not. This can be seen in Perl with $!
and $@. I do not recommend numeric codes; that's just a limitation
that processes are only given a numeric exit code. So you could do
return 'It is Tuesday' if ...;
# do the processing.
return '';
It has the slight disadvantage of being like system(): you test for
success with !thething(...) instead of thething(...).
(2) At my $ORKPLACE, the convention in any sort of complicated
situation is to return an anonymous hash for separate parts.
{ THE_VALUE_WE_WANT_TO_RETURN_NORMALLY => 23, ERROR => '' }
{ THE_VALUE_WE_WANT_TO_RETURN_NORMALLY => undef, ERROR => "Tuesday!" }
--
Tim McDaniel, tmcd@panix.com
------------------------------
Date: Sun, 11 May 2014 20:51:04 -0700 (PDT)
From: ccc31807 <cartercc@gmail.com>
Subject: Re: More general programming than perl...
Message-Id: <59a1bebe-7f0f-4c11-9921-48ca8bdbcec2@googlegroups.com>
On Wednesday, April 30, 2014 7:29:47 AM UTC-4, Justin C wrote:
> I need to prepare a "Latest Products" document, the
> contents are coming from a database, I've got to fill the
> document with the latest and stop when the document is 24
> pages, however, the document runs chronologically from
> oldest to newest. I'm trying to work out how I can decide
> which item/date to put at the start of the document, so I
> don't run out of data before 24 pages, or over-run 24
> pages.
Is 'page' a physical page or a logical page?
What format is your output?
To begin with, I assume that you have your data in some kind of nested hash=
. I assume that your keys might be some kind of date that could be sorted, =
like maybe a Julian date. I also assume that your SQL orders by date and re=
turns a limit of 24. In that case, you would do this:
foreach my $product (sort keys %products)
{
print_page($products{$product});
}
This would work fine if your 'pages' were logical pages.
If your pages were physical pages,and if PDF output was acceptable, it woul=
d be easy to use PDF::API2 or similar, which requires you to issue literal =
line feeds. Count down the lines until you reach the bottom, and start a ne=
w page. Quit when you hit 24.
I've had great success recently using Perl to emit TEX source code and then=
calling
`pdflatex source.tex`;
If you feel comfortable using LaTeX I think you will be pleasantly surprise=
d at how easy Perl can produce TEX, and this gives you exquisite control ov=
er the presentation of your output.
Pert is a great tool for this kind of job. For me, as long as you get your =
initial data structure right, this ought to be trivial.
CC.
------------------------------
Date: Fri, 09 May 2014 11:36:39 +0200
From: Peter Makholm <peter@makholm.net>
Subject: Re: Regexp to combine table cells
Message-Id: <87lhube1js.fsf@vps1.hacking.dk>
Bart Van der Donck <bart@nijlen.com> writes:
> Hello,
>
> I'm having difficulties to find a regular expression starting from the
> following input:
Regular expressions are really not the right toll for that task. It can
be done with perl regular expressions, but it wont be pretty.
You should look at a real HTML parser instead. My personal preference
would be to use HTML::TreeBuilder to parse your HTML. This would leave
you with a navigatable perl structure where you can itterate over the
<td> elements and the generate a new list of <td> elements.
Should be quite simple...
//Makholm
------------------------------
Date: Fri, 09 May 2014 12:30:14 +0200
From: gamo <gamo@telecable.es>
Subject: Re: Regexp to combine table cells
Message-Id: <lkianp$mqs$1@speranza.aioe.org>
El 09/05/14 10:59, Bart Van der Donck escribió:
> Hello,
>
> I'm having difficulties to find a regular expression starting from the following input:
>
> my $row = '
> <tr>
> <td>UNIQUESTRING</td>
> <td>A</td>
> <td>A</td>
> <td>A</td>
> <td>B</td>
> <td>B</td>
> <td>B</td>
> <td>B</td>
> <td>B</td>
> <td>A</td>
> <td>A</td>
> <td></td>
> <td></td>
> <td>C</td>
> <td></td>
> </tr>
> ';
>
> What I would like to achieve:
>
> <tr>
> <td>UNIQUESTRING</td>
> <td colspan="3">A</td>
> <td colspan="5">B</td>
> <td colspan="2">A</td>
> <td colspan="2"></td>
> <td>C</td>
> <td></td>
> </tr>
>
> Thanks
>
> --
> Bart
>
There is poetry out there remarking that html is not regex.
How I do this specific example, in 3 steps:
1) Deleting all html tags with tr///, and UNIQUESTRING
2) Counting the sequence which results
3) Printing the new table with the counters
HTH
--
http://www.telecable.es/personales/gamo/
------------------------------
Date: Fri, 09 May 2014 13:05:28 +0100
From: Ben Bacarisse <ben.usenet@bsb.me.uk>
Subject: Re: Regexp to combine table cells
Message-Id: <0.f104ea3da6629de7eedc.20140509130528BST.87siojw41j.fsf@bsb.me.uk>
Bart Van der Donck <bart@nijlen.com> writes:
> Hello,
>
> I'm having difficulties to find a regular expression starting from the
> following input:
>
> my $row = '
> <tr>
> <td>UNIQUESTRING</td>
> <td>A</td>
> <td>A</td>
> <td>A</td>
> <td>B</td>
> <td>B</td>
> <td>B</td>
> <td>B</td>
> <td>B</td>
> <td>A</td>
> <td>A</td>
> <td></td>
> <td></td>
> <td>C</td>
> <td></td>
> </tr>
> ';
>
> What I would like to achieve:
>
> <tr>
> <td>UNIQUESTRING</td>
> <td colspan="3">A</td>
> <td colspan="5">B</td>
> <td colspan="2">A</td>
> <td colspan="2"></td>
> <td>C</td>
> <td></td>
> </tr>
As has been said, REs are probably not the right solution. They often
result in fragile code when used with HTML. Still, it's a interesting
questions so here's an answer:
$row =~ s! <td> ([^<]*) </td> ((?: \s* <td>\1</td> )+)
! "<td colspan='" . ((() = $2 =~ /<td>/g) + 1) . "'>$1</td>" !xeg;
If the A, B and C of your examples are actually very much more complex
then my [^<]* won't do and the whole thing will look a lot worse.
--
Ben.
------------------------------
Date: Fri, 9 May 2014 16:11:11 +0000 (UTC)
From: tmcd@panix.com (Tim McDaniel)
Subject: Re: Regexp to combine table cells
Message-Id: <lkiumv$cuv$1@reader1.panix.com>
In article <lkianp$mqs$1@speranza.aioe.org>, gamo <gamo@telecable.es>
wrote:
>El 09/05/14 10:59, Bart Van der Donck escribió:
>> my $row = '
>> <tr>
>> <td>UNIQUESTRING</td>
>> <td>A</td>
>> <td>A</td>
>> <td>A</td>
>> <td>B</td>
>> <td>B</td>
>> <td>B</td>
>> <td>B</td>
>> <td>B</td>
>> <td>A</td>
>> <td>A</td>
>> <td></td>
>> <td></td>
>> <td>C</td>
>> <td></td>
>> </tr>
>> ';
...
>There is poetry out there remarking that html is not regex.
Not regexpable in general. "This ... is wrong tool. Never use this."
>1) Deleting all html tags with tr///, and UNIQUESTRING
tr/// does single-character substitution. You can't get rid of the
HTML tags with tr. s///, probably, if there's nothing like < inside
comments.
--
Tim McDaniel, tmcd@panix.com
------------------------------
Date: Fri, 09 May 2014 18:45:02 +0200
From: gamo <gamo@telecable.es>
Subject: Re: Regexp to combine table cells
Message-Id: <lkj0mg$mgg$1@speranza.aioe.org>
El 09/05/14 18:11, Tim McDaniel escribió:
> tr/// does single-character substitution. You can't get rid of the
> HTML tags with tr. s///, probably, if there's nothing like < inside
> comments.
Thank you for the correction.
--
http://www.telecable.es/personales/gamo/
------------------------------
Date: Fri, 09 May 2014 23:14:29 +0300
From: George Mpouras <gravitalsun@hotmail.foo>
Subject: Re: Regexp to combine table cells
Message-Id: <lkjcv7$26rj$1@news.ntua.gr>
# have fun !
use strict;
use warnings;
my $row = '
<tr>
<td>UNIQUESTRING</td>
<td>A</td>
<td>A</td>
<td>A</td>
<td>B</td>
<td>B</td>
<td>B</td>
<td>B</td>
<td>B</td>
<td>A</td>
<td>A</td>
<td></td>
<td></td>
<td>C</td>
<td></td>
</tr>
';
my @data;
my $regex = qr/<td>(.*?)<\/td>/o;
my $i=0;
my $out = "<tr>\n";
my $match_previous = 'UNIQUESTRING';
while ( $row =~ /$regex/g )
{
$i++ if $match_previous ne $^N;
$data[$i]->{ $^N }++;
$match_previous = $^N;;
}
foreach (@data) {
my ($k,$v) = each %{$_};
$out .= $v ==1 ? "<td>$k</td>\n" : "<td colspan=\"$v\">$k</td>\n"
}
$out .= '</tr>';
print $out;
------------------------------
Date: Sat, 10 May 2014 01:17:43 -0700 (PDT)
From: Bart Van der Donck <bart@nijlen.com>
Subject: Re: Regexp to combine table cells
Message-Id: <c48371c0-0fc2-4ce0-95bf-51cb1a86f52f@googlegroups.com>
Thanks to everyone for the input. Ben's solution is technically brilliant, =
but indeed the A/B/C are more complex; and the <td>'s have their arguments =
as well. George's approach fails at EOL, but appears to be okay with an ini=
tial
$row =3D~ tr/\015\012//d;
Then still a trick to handle the arguments of each <td>. Fortunately I'm in=
a situation where identical cell values always have identical <td>-argumen=
ts:
# at init
my $row =3D '
<tr>
<td>=A7 class=3D"c1" =A7A</td>
<td>=A7 class=3D"c1" =A7A</td>
<td>=A7 class=3D"c2" =A7B</td>
<td></td>
</tr>
';
# final regex
$out =3D~ s/>=A7 (.*?) =A7/$1>/g;
And I believe that should do it...
--=20
Bart
------------------------------
Date: Mon, 12 May 2014 00:49:37 +0000 (UTC)
From: Kaz Kylheku <kaz@kylheku.com>
Subject: Re: Regexp to combine table cells
Message-Id: <20140511174446.311@kylheku.com>
On 2014-05-09, Bart Van der Donck <bart@nijlen.com> wrote:
> Hello,
>
> I'm having difficulties to find a regular expression starting from the following input:
>
> my $row = '
> <tr>
> <td>UNIQUESTRING</td>
> <td>A</td>
> <td>A</td>
> <td>A</td>
> <td>B</td>
> <td>B</td>
> <td>B</td>
> <td>B</td>
> <td>B</td>
> <td>A</td>
> <td>A</td>
> <td></td>
> <td></td>
> <td>C</td>
> <td></td>
> </tr>
> ';
TXR language, version 89:
@(output :into str)
<tr>
<td>UNIQUESTRING</td>
<td>A</td>
<td>A</td>
<td>A</td>
<td>B</td>
<td>B</td>
<td>B</td>
<td>B</td>
<td>B</td>
<td>A</td>
<td>A</td>
<td></td>
<td></td>
<td>C</td>
<td></td>
</tr>
@(end)
@(next :list str)
<tr>
<td>@header</td>
@(collect :vars (item count))
@(bind count 1)
<td>@item</td>
@(collect :gap 0)
<td>@item</td>
@(do (inc count))
@(end)
@(until)
</tr>
@(end)
@(output)
<tr>
<td>@header</td>
@(repeat :vars (count))
<td@(if (> count 1) ` colspan="@count"` "")>@item</td>
@(end)
</tr>
@(end)
Output:
<tr>
<td>UNIQUESTRING</td>
<td colspan="3">A</td>
<td colspan="5">B</td>
<td colspan="2">A</td>
<td colspan="2"></td>
<td>C</td>
<td></td>
</tr>
------------------------------
Date: Tue, 13 May 2014 05:40:57 -0700 (PDT)
From: Webcolortechnologies Hydbad <webcolortech@gmail.com>
Subject: Social Media Optimization Services in Hyderabad,India | Social Media Marketing Agency in India
Message-Id: <4bb6abc5-c0cf-4f67-af3c-79b66629935e@googlegroups.com>
It is possible to revamp your business through social media optimization. S=
ocial media sites offer great opportunities for businesses to expand its ba=
se at a great pace. The products and services can be promoted through socia=
l media sites. In this context, social sites are coming up with new solutio=
n to offer a solid platform through which targeted audience can be reached =
and returns on investment can be enhanced in an efficient manner. Regardles=
s of the kind of website that you will create, you should want to implement=
Google SEO techniques so that your website's visibility becomes very high.
Through Social Media Optimization (SMO) process we make your content easily=
shareable across the social web. As there are many options available in to=
day's world where people can view your content. Target is to drive as much =
traffic to website as possible and ensure people go through creative conten=
t and attractive designs.
The content and the design of the site should be developed in such a way th=
at it should be visible on every required widget, required app and social m=
edia entry points providing desired benefits to your brand, the content sho=
uld be more transportable for better and desired results.
Social Media Optimization Services:
Integration of social media into your Website
Setup and configuration of Social Media Accounts - Facebook, Twitter, Linke=
din, Google+ and other Web 2.0 websites
Linking Social Media accounts together for greater efficiency
Blog design, setup and optimization on Word Press, Blogger, and other CMS p=
latforms
Engaging followers of your brand with special offers
Customization of your Facebook page
Customization of your Twitter background
Customization of your YouTube channel
Customization of your Google+ page
Widget strategy development
Brand Promotion and Customer base building
Creation and promotion of videos for better search engine rankings and targ=
eted traffic to website
Targeted PPC campaigns across all social networks
Viral Marketing
Write and distribute articles and press releases
Create and/or run contests using social networking accounts
For more details : http://www.webcolortech.com/social-media-marketing-servi=
ces/
------------------------------
Date: 6 Apr 2001 21:33:47 GMT (Last modified)
From: Perl-Users-Request@ruby.oce.orst.edu (Perl-Users-Digest Admin)
Subject: Digest Administrivia (Last modified: 6 Apr 01)
Message-Id: <null>
Administrivia:
To submit articles to comp.lang.perl.announce, send your article to
clpa@perl.com.
Back issues are available via anonymous ftp from
ftp://cil-www.oce.orst.edu/pub/perl/old-digests.
#For other requests pertaining to the digest, send mail to
#perl-users-request@ruby.oce.orst.edu. Do not waste your time or mine
#sending perl questions to the -request address, I don't have time to
#answer them even if I did know the answer.
------------------------------
End of Perl-Users Digest V11 Issue 4211
***************************************