Li, Jialin wrote:
use strict;
 my $string = 'field1,int,10#field2,string,abc';
 my @values = split /#/,$string;


 my @vars;
 no strict 'refs';
 for (@values) {
         my @tmp = split /,/;
   push @vars, $tmp[0];
         ${$tmp[0]} = $tmp[2];
 }

 for (@vars) {
         print $_, ": ", ${$_}, "\n";
 }
 __END__


 this will solve your problem, but it uses symbolic reference whose
use, I think, is discouraged.

 A better solution is to use hash:

 use strict;
 my $string = 'field1,int,10#field2,string,abc';
 my @values = split /#/,$string;

 my %vars;
 for (@values) {
         my @tmp = split /,/;
         $vars{$tmp[0]} = $tmp[2];
 }

 use Data::Dumper;
 print Dumper \%vars;

 __END__

On Tue, Apr 22, 2008 at 4:08 PM, Ravi Malghan <[EMAIL PROTECTED]> wrote:
Hi: I have a string with a number of variable name, type and value pairs. I 
want to split the field and build my variables. Below is an example

$string = "field1,int,10#field2,string,abc";
@values = split(/#/,$string);

I want to get two variables from the string, equivalent to the below statements
$field1=10;
$field2="abc";

TIA.
Ravi



     
____________________________________________________________________________________
Be a better friend, newshound, and
know-it-all with Yahoo! Mobile.  Try it now.  
http://mobile.yahoo.com/;_ylt=Ahu06i62sR8HDtDypao8Wcj9tAcJ

--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/





my $string = "field1,int,10#field2,string,abc#field3,varchar,abc123";
my @vals = split(/#/,$string);

my %h;
my @arr;

for (@vals){
@arr = (split/,/)[0,2];
%h = (@arr);
print keys %h; print "---"; say values %h;
}


--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/


Reply via email to