--- Connie Chan <[EMAIL PROTECTED]> wrote:
> say, $a = "1234:4321;abcde;fghij::;klmno";
> In case, I want $x = "1234" , $y = "4321", $data = "abcde;fghij::;klmno"
> Then I do in this way :
>
> @dataLine = split(/;/, $a);
> ($x, $y) = split (/:/, $dataLine[0]);
> $data = join(";", shift(@dataLine));
>
> So I can get the result what I want... but, anybody can suggest me if
> this process can be done simplier ?
use strict;
my $stuff = "1234:4321;abcde;fghij::;klmno";
my ( $x, $y, $data ) = split /[;:]/, $stuff, 3;
print "$x\n$y\n$data";
Be careful using this, though. It's easy to get the regex wrong. Also, note the
optional third
argument to split which restricts the split to 3 elements. And I wouldn't use $a as a
variable
name. That can cause problems when you use the "magical" $a and $b variables in sorts
(e.g. sort
$a <=> $b).
Hope that helps.
Cheers,
Curtis "Ovid" Poe
=====
"Ovid" on http://www.perlmonks.org/
Someone asked me how to count to 10 in Perl:
push@A,$_ for reverse q.e...q.n.;for(@A){$_=unpack(q|c|,$_);@a=split//;
shift@a;shift@a if $a[$[]eq$[;$_=join q||,@a};print $_,$/for reverse @A
__________________________________________________
Do You Yahoo!?
Send your FREE holiday greetings online!
http://greetings.yahoo.com
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]