Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Perl > Inverted syntax for an if conditional

Reply
Thread Tools

Inverted syntax for an if conditional

 
 
Mark Hobley
Guest
Posts: n/a
 
      04-22-2006
I have some information that states that the if conditional can be be inverted
from the traditional syntax

if (EXPRESSION) BLOCK

to an alternative syntax:

if BLOCK (EXPRESSION);

I have a simple line of code:

if ($guess == 6) { print 'Wow! Lucky Guess!'; }

However, when I try to invert this, I get a syntax error:

{ print 'Wow! Lucky Guess!'; } if ($guess == 6); # Syntax error

Why does this not work?

The example is academic, and I don't intend to code with the inverted syntax.
I am just trying to get an understanding for the purpose of producing
documentation.

Thanks in advance to anyone who can help.

Regards,

Mark.

--
Mark Hobley
393 Quinton Road West
QUINTON
Birmingham
B32 1QE

Telephone: (0121) 247 1596
International: 0044 121 247 1596

Email: markhobley at hotpop dot donottypethisbit com

http://markhobley.yi.org/

 
Reply With Quote
 
 
 
 
Jürgen Exner
Guest
Posts: n/a
 
      04-22-2006
Mark Hobley wrote:
> I have some information that states that the if conditional can be be
> inverted from the traditional syntax
>
> if (EXPRESSION) BLOCK
>
> to an alternative syntax:
>
> if BLOCK (EXPRESSION);


Did you mean
BLOCK if (EXPRESSION);

Anyway, both are wrong. Why don't you check the documenation?
From "perldoc perlsyn":

Any simple statement may optionally be followed by a *SINGLE* modifier,
just before the terminating semicolon (or block ending). The possible
modifiers are:
if EXPR

I can only guess that this is what you were looking for.

> However, when I try to invert this, I get a syntax error:
> { print 'Wow! Lucky Guess!'; } if ($guess == 6); # Syntax error


Because a block is not a simple statement. Did you try
print 'Wow! Lucky Guess!' if ($guess == 6);

jue


 
Reply With Quote
 
 
 
 
Justin C
Guest
Posts: n/a
 
      04-22-2006
On 2006-04-22, Mark Hobley <(E-Mail Removed)> wrote:
> I have some information that states that the if conditional can be be inverted
> from the traditional syntax
>
> if (EXPRESSION) BLOCK
>
> to an alternative syntax:
>
> if BLOCK (EXPRESSION);
>
> I have a simple line of code:
>
> if ($guess == 6) { print 'Wow! Lucky Guess!'; }
>
> However, when I try to invert this, I get a syntax error:
>
> { print 'Wow! Lucky Guess!'; } if ($guess == 6); # Syntax error
>
> Why does this not work?
>
> The example is academic, and I don't intend to code with the inverted syntax.
> I am just trying to get an understanding for the purpose of producing
> documentation.


This works for me:

#!/usr/bin/perl
my $guess=6;
print "Wow! Lucky guess!\n" if ( $guess == 6 ) ;

(followups set)


Justin.

--
Justin C, by the sea.
 
Reply With Quote
 
Mark Hobley
Guest
Posts: n/a
 
      04-22-2006
In alt.perl Mark Hobley <(E-Mail Removed)> wrote:
>
> { print 'Wow! Lucky Guess!'; } if ($guess == 6); # Syntax error
>
> Why does this not work?
>


I have also discovered some more weird behaviour, this time using the syntax:

STATEMENT [, STATEMENT ], if EXPRESSION;

If I use:

print 'I should be so lucky!', print 'Chucky!', print 'Mucky!', print
'Clucky!', if ($guess == 6);

The statements run in reverse order, and I get number ones inserted in the
output:

Clucky!Mucky!1Chucky!1I should be so lucky!1

Regards,

Mark.

--
Mark Hobley
393 Quinton Road West
QUINTON
Birmingham
B32 1QE

Telephone: (0121) 247 1596
International: 0044 121 247 1596

Email: markhobley at hotpop dot donottypethisbit com

http://markhobley.yi.org/

 
Reply With Quote
 
Mark Hobley
Guest
Posts: n/a
 
      04-22-2006
In alt.perl "Jürgen Exner" <(E-Mail Removed)> wrote:
> Mark Hobley wrote:


> Did you mean
> BLOCK if (EXPRESSION);


Oops, yes I did. That was a typing error.

> Anyway, both are wrong. Why don't you check the documenation?
> From "perldoc perlsyn":
>
> Any simple statement may optionally be followed by a *SINGLE* modifier,
> just before the terminating semicolon (or block ending). The possible
> modifiers are:
> if EXPR
>
> Because a block is not a simple statement. Did you try
> print 'Wow! Lucky Guess!' if ($guess == 6);
>


Yeah that works.

A professional programming guide tells me that the following forms of if
statement are legal in Perl:

STATEMENT if EXPRESSION;

STATEMENT, STATEMENT ... if EXPRESSION;

BLOCK if EXPRESSION;

Presumably there is a mistake in the text, and BLOCK if EXPRESSION should be
omitted from this list, because STATEMENT if EXPRESSION works, but
BLOCK if EXPRESSION appears not to.

Regards,

Mark.

--
Mark Hobley
393 Quinton Road West
QUINTON
Birmingham
B32 1QE

Telephone: (0121) 247 1596
International: 0044 121 247 1596

Email: markhobley at hotpop dot donottypethisbit com

http://markhobley.yi.org/

 
Reply With Quote
 
Jürgen Exner
Guest
Posts: n/a
 
      04-22-2006
Mark Hobley wrote:
> I have also discovered some more weird behaviour,
> print 'I should be so lucky!', print 'Chucky!', print 'Mucky!', print
> 'Clucky!', if ($guess == 6);
>
> The statements run in reverse order, and I get number ones inserted
> in the output:
>
> Clucky!Mucky!1Chucky!1I should be so lucky!1


Nothing weird at all.
If you add explicit paranthesis then it's obvious what's going on:

print ('I should be so lucky!',
(print 'Chucky!',
(print 'Mucky!',
print ('Clucky!')
)
)
)

The injected digits '1' are just the return value 'true' of the inner
print() statements, e.g. for the outmost you will get eventually

print ('I should be so lucky!', 1)

I suggest you read the documentation for the functions that you are using.
"perldoc -f print":

print Prints a string or a list of strings. Returns true if
successful.


jue


 
Reply With Quote
 
Randal L. Schwartz
Guest
Posts: n/a
 
      04-22-2006
>>>>> "Mark" == Mark Hobley <(E-Mail Removed)> writes:

Mark> A professional programming guide tells me that the following forms of if
Mark> statement are legal in Perl:

Mark> STATEMENT if EXPRESSION;

Mark> STATEMENT, STATEMENT ... if EXPRESSION;

Mark> BLOCK if EXPRESSION;

Mark> Presumably there is a mistake in the text, and BLOCK if EXPRESSION should be
Mark> omitted from this list, because STATEMENT if EXPRESSION works, but
Mark> BLOCK if EXPRESSION appears not to.

That's really wrong.

It's:

EXPRESSION if EXPRESSION;

or

if (EXPRESSION) BLOCK

where BLOCK is:

{ STATEMENT STATEMENT ... STATEMENT }

and STATEMENT is:

EXPRESSION;

and many other things.

--
Randal L. Schwartz - Stonehenge Consulting Services, Inc. - +1 503 777 0095
<(E-Mail Removed)> <URL:http://www.stonehenge.com/merlyn/>
Perl/Unix/security consulting, Technical writing, Comedy, etc. etc.
See PerlTraining.Stonehenge.com for onsite and open-enrollment Perl training!
*** Posted via a free Usenet account from http://www.teranews.com ***
 
Reply With Quote
 
Ch Lamprecht
Guest
Posts: n/a
 
      04-22-2006
Mark Hobley wrote:


> A professional programming guide tells me that the following forms of if
> statement are legal in Perl:
>
> STATEMENT if EXPRESSION;
>
> STATEMENT, STATEMENT ... if EXPRESSION;
>
> BLOCK if EXPRESSION;
>
> Presumably there is a mistake in the text, and BLOCK if EXPRESSION should be
> omitted from this list, because STATEMENT if EXPRESSION works, but
> BLOCK if EXPRESSION appears not to.


do BLOCK if EXPRESSION


perldoc -f do

Regards,
Christoph
--

perl -e "print scalar reverse q/(E-Mail Removed)/"
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
replace double inverted commas into slash double inverted commas in string AviraM Java 2 09-28-2006 06:19 PM
? ELSE Conditional Comment / Using Conditional Comments Inside Other Tags To Comment Out Attributes Alec S. HTML 10 04-16-2005 02:21 AM
Embeded Java DB with inverted indexing and searching capabilities for Java Beans Sakthi Java 0 09-15-2004 05:35 AM
Need to double inverted commas if using parameters? Jon Maz ASP .Net 3 02-13-2004 05:35 PM
Inverted Clock in ACEX1K Manfred Balik VHDL 1 08-30-2003 12:29 AM



Advertisments