>>>>> "G" == Grant  <emailgr...@gmail.com> writes:

  G> The value of $string could include dashes or not.  If it is, I'd like
  G> the value of $foo to be set to the portion of the string to the left
  G> of the first dash.  If not, I'd like the value of $foo to be null.

  G> I'm doing the following, but $foo is equal to "1" if there are no
  G> dashes in the string:

  G> $foo = (split('-',$string)),[0];

that has a basic syntax error in it. did you run it with warnings
enabled? you should always run with warnings as it will help you fix
problems like this:


perl -wle '$s = "abc" ; $foo = (split("-",$s)),[0]; print $foo'
Use of implicit split to @_ is deprecated at -e line 1.
Useless use of anonymous list ([]) in void context at -e line 1.

the , is incorrect there. where did you learn that from? when you slice
a list you put the [] immediately after the closing ).

even with that fix it still isn't going to work. 

perl -wle '$s = "a-bc" ; $foo = (split("-",$s))[0]; print $foo'
a
perl -wle '$s = "abc" ; $foo = (split("-",$s))[0]; print $foo'
abc

split returns the whole string as the only result field if it finds no
delimiters. a correct solution is to use a regex and check for matching:

        $foo = $string =~ /^([^-])+-/ ? $1 : '' ;

that will grab something from the start to the first - and grab it. if
it matched it will assign it to $foo, otherwise assign ''. (and '' is
called the null string, not null. perl has no null things unlike
databases).

uri

-- 
Uri Guttman  ------  u...@stemsystems.com  --------  http://www.sysarch.com --
-----  Perl Code Review , Architecture, Development, Training, Support ------
---------  Gourmet Hot Cocoa Mix  ----  http://bestfriendscocoa.com ---------

-- 
To unsubscribe, e-mail: beginners-unsubscr...@perl.org
For additional commands, e-mail: beginners-h...@perl.org
http://learn.perl.org/


Reply via email to