$a = "1234:4321;abcde;fghij::;klmno"; @dataLine = split(/;/, $a, 2); ($x, $y) = split (/:/, $dataLine[0]);
print "x: $x\n"; print "y: $y\n"; print "rest: $dataLine[1]\n"; see split in perldoc perlfunc > -----Original Message----- > From: Curtis Poe [mailto:[EMAIL PROTECTED]] > Sent: Thursday, January 03, 2002 1:44 PM > To: Connie Chan; [EMAIL PROTECTED] > Subject: Re: Happy New Yr Y2K+2 =) Spliting Question > > > --- 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] > -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]