in reply to Re^2: Concatenating strings with tabs between and returning the result
in thread Concatenating strings with tabs between and returning the result

I got these errors
Warning: Use of "length" without parens is ambiguous Unterminated <> operator
fixed it with
$_ .= "\t" if length() < 8;
poj

Replies are listed 'Best First'.
Re^4: Concatenating strings with tabs between and returning the result
by Aristotle (Chancellor) on Jan 19, 2003 at 12:25 UTC
    Thanks, I always get bitten by that one. In this case you can also just switch the order of operands to disambiguate the meaning:
    $_ .= "\t" if 8 > length;

    Makeshifts last the longest.

Re: Re: Re^2: Concatenating strings with tabs between and returning the result
by Anonymous Monk on Jan 19, 2003 at 15:14 UTC
    Gentlemen, Many thanks for all the contributions. In the end, I decided to go for the following code, similar to suggestions made by poj and Aristotle:
    sub concat { my @stringarray = @_; foreach $_ (@stringarray) { $_= "TOOLONG" if length () > 15; $_ .= "\t" if length () < 8; } return (join "\t", @stringarray); }
    I’m particularly pleased with the solution as it enables me to pass a varied number of arguments to the subroutine. The use of the parentheses after the length function is to prevent errors from the compiler when using strict. The function is called as follows:
    $concatstring = &concat ($handle, $hostname, $maintenance, $location, +$buiscat);
    I decided against the use of map, as with the documentation available I can only understand it in a very simple context. Once again, thanks.