Difference between $() and ()
Today, I was writing some script to play around hash declaration. My line of script to declare hash was
MSH>$a = @{(‘foo’ + ‘bar’) = 5)}
MSH>$a.foobar
5
MSH>
Then, I tried
MSH>$a = @{$(‘foo’ + ‘bar’)=5}
MSH>$a.foobar
5
MSH>
That worked too. So, what’s the difference between () and $()
Answer is () is used only for expressions whereas $() is used for statement list. The above example works because ‘foo’ + ‘bar’ is treated as statement in $() case.
To clarify the point
MSH>$a = @{ $( $a=’foo’ ; $a += ‘bar’ ; $a) = 5}
MSH>$a.foobar
5
MSH>
The above will work fine. However,
MSH> $a = @{ ( $a=’foo’ ; $a += ‘bar’ ; $a) = 5}
will fail because parser expects an expression, but finds a statement list.
Comments
- Anonymous
August 22, 2005
Working with the new Monad beta -- getting settled in
Param statement, and new-object
Difference... - Anonymous
January 21, 2009
PingBack from http://www.keyongtech.com/2831862-how-does-work