-----Original Message----- >From: Jenda Krynicky <[EMAIL PROTECTED]> >Sent: Jan 23, 2008 12:59 AM >To: beginners-list <beginners@perl.org> >Subject: Re: about the dot > >From: Jeff Pang <[EMAIL PROTECTED]> >> I'm a little confused by perl's dot operator.for example, >> >> $ perl -le 'print 3 . 4 ' >> 34 >> $ perl -le 'print 3.4 ' >> 3.4 >> >> these two commands got different results. >> >> who says Perl interpreter will ignore the blackspace around an operator? I >> saw it doesn't here. >> Ok you may say 3.4 is a float not a statement with '.' operation, but this >> case really make people confused. > >As far as I can tell you are the first to get confused. > >I mean if the compiler sees a digit it knows a numerical literal >starts. So it reads as much as it can that still matches the >definition of numberical literal and then looks for an operator or >end of statement or end of block or closing brace or ... > >3.4 whole matches so it is treated as such. And since spaces are not >allowed withing numerical literals as soon as perl encounters a space >the literal is considered complete and perl starts to look for the >next thing. > >In either case it is what it looks like. 3.4 looks like a float so it >is float. 3 . 4 doesn't look like a single float. It looks like two >integers with some operator. And that's what it is. >
Ok thanks. But how about this case? why it can't work as we think? $ perl -le 'print 3.4 .3. 4' Number found where operator expected at -e line 1, near "3. 4" (Missing operator before 4?) syntax error at -e line 1, near "3. 4" Execution of -e aborted due to compilation errors. and why this can work? $ perl -le 'print 3.4 .3 .4' 3.434 in the first case, what rules let perl think the last dot is not an operator but a part of the float? Regards, Jeff Pang -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] http://learn.perl.org/