# New Ticket Created by David Nicol # Please include the string: [perl #43068] # in the subject line of all future correspondence about this issue. # <URL: http://rt.perl.org/rt3/Ticket/Display.html?id=43068 > ----------------------------------------------------------------- [Please enter your report here] Occasionally the fact that there is an implied block around a C<use> statement creates an unwanted side effect which is that lexical variable declarations on the use line go away: use SpecialVariable my $honk => 'ooga'; must be written as my $honk; use SpecialVariable $honk => 'ooga'; This is not a big deal. However, in discussions of whether to document this or not, it became apparent that the situation is considered a bug to fix rather than a behavior to document more clearly than the implication that of course this would happen in perlfunc/use's statement of exact equivalence: use Module LIST [...] is exactly equivalent to BEGIN { require Module; import Module LIST; } except that Module must be a bareword. Anyway, my proposal is that the situation could be remedied by loosening the syntax of BEGIN etc. to allow rounds instead of curlies, which would not create a new lexical pad, after which C<use> would be modified to have an accurate documented equivalence of BEGIN ( require Module; import Module LIST ) [Please do not change anything below this line] ----------------------------------------------------------------- --- Flags: category=core severity=wishlist --- This perlbug was built using Perl v5.8.8 in the Red Hat build system.