Sudarshan Raghavan wrote: > simran wrote: > > > I wrote my self this subroutine... which comes in very handy :-) > > > > ..snip > > > > sub strip { > > my $self = shift; > > my $ref = shift; > > > > if (! ref($ref)) { > > $ref =~ s/(^[\s\t]*)|([\s\t]*$)//g if (defined $ref); > > Why is it better to do this in two steps? Read through this FAQ > perldoc -q 'How do I strip blank space from the beginning/end of a string' > > \s includes \t, the character class [\s\t] is uneccessary. The capture in your regex > match can also be avoided, you might want to a look at the '?:' extended pattern in > perldoc perlre. The 'g' modifier does not server any purpose, it would if used along > with > the 's' or 'm' modifier. > > > > > return $ref; > > } > > elsif (ref($ref) =~ /^ARRAY$/i) { > > This could just have been elsif (ref($ref) eq 'ARRAY'), avoid regexes if possible. > > > > > foreach my $i (0 .. $#$ref) { > > $ref->[$i] =~ s/(^[\s\t]*)|([\s\t]*$)//g; > > } > > } > > elsif (ref($ref) =~ /^HASH$/i) { > > while (my ($key, $value) = each %$ref) { > > delete $ref->{$key}; > > $key =~ s/(^[\s\t]*)|([\s\t]*$)//g; > > $value =~ s/(^[\s\t]*)|([\s\t]*$)//g; > > $ref->{$key} = $value; > > } > > } > > elsif (ref($ref) =~ /^SCALAR$/i) { > > $$ref =~ s/(^[\s\t]*)|([\s\t]*$)//g; > > } > > else { > > die "Unknown reference type"; > > } > > } > > > > This is another approach for the same problem, you can use this for starters :-) > The arguments passed to a subroutine in the @_ arrays are aliases for the original > parameters (perldoc perlsub). You can make use of that here. > > sub trim { > foreach (@_) { > my $ref_to = ref ($_); > SWITCH: { > (!$ref_to) && do { > s/^\s+//; > s/\s+$//; > last SWITCH; > }; > ($ref_to eq 'SCALAR') && do { > ${$_} =~ s/^\s+//; > ${$_} =~ s/\s+$//; > last SWITCH; > }; > ($ref_to eq 'ARRAY') && do { > foreach my $arr_elem (@{$_}) { > $arr_elem =~ s/^\s+//; > $arr_elem =~ s/\s+$//; > } > last SWITCH; > }; > ($ref_to eq 'HASH') && do { > foreach my $hash_val (%{$_}) {
oops, the above statement should be foreach my $hash_val (values (%{$_})) { > > $hash_val =~ s/^\s+//; > $hash_val =~ s/\s+$//; > } > last SWITCH; > }; > print "Invalid parameter\n"; > } > } > } > > HTH -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]