Li, Jialin wrote:
> use strict;
> my $string = 'field1,int,10#field2,string,abc';
> my @[EMAIL PROTECTED]
= split /#/,$string;
>
>
> my @[EMAIL PROTECTED]
> no strict 'refs';
> for (@[EMAIL PROTECTED]
) {
> my @[EMAIL PROTECTED]
= split /,/;
> push @[EMAIL PROTECTED]
$tmp[0];
> ${$tmp[0]} = $tmp[2];
> }
>
> for (@[EMAIL PROTECTED]
) {
> 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 @[EMAIL PROTECTED]
= split /#/,$string;
>
> my %vars;
> for (@[EMAIL PROTECTED]
) {
> my @[EMAIL PROTECTED]
= split /,/;
> $vars{$tmp[0]} = $tmp[2];
> }
>
> use Data::Dumper;
> print Dumper \%vars;
>
> __END__
>
> On Tue, Apr 22, 2008 at 4:08 PM, Ravi Malghan <rmalghan@[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";
>> @[EMAIL PROTECTED]
= 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: beginners-unsubscribe@[EMAIL PROTECTED]
>> For additional commands, e-mail: beginners-help@[EMAIL PROTECTED]
>> http://learn.perl.org/
>>
>>
>>
>
my $string = "field1,int,10#field2,string,abc#field3,varchar,abc123";
my @[EMAIL PROTECTED]
= split(/#/,$string);
my %h;
my @[EMAIL PROTECTED]
(@[EMAIL PROTECTED]
){
@[EMAIL PROTECTED]
= (split/,/)[0,2];
%h = (@[EMAIL PROTECTED]
);
print keys %h; print "---"; say values %h;
}


|