On Wed Jul 14 21:43:09 2010, supernovus wrote: > Say you have a module file called Greetings.pm6 that contains: > > use v6; > module Greetings { > sub hello($name='World') { > say "Hello $name"; > } > } > > If you were to do: perl6 -e 'use Greetings; hello("moon");' > It would appropriately print "Hello moon"; > > If you were to go into the REPL, you will find some more mysterious > behavior: > > > use Greetings; hello('Moon'); > Hello Moon > > hello() > Could not find sub &hello > > A new session: > > > use Greetings; > > hello() > Could not find sub &hello > > use Greetings; > P > > hello() > Hello World > > It seems that any module that exports a subroutine, does not have the > subroutine exported in the REPL unless you call the 'use' statement twice. > > You can test this with a module included with Rakudo: > > > use DateTime::strftime; > > strftime('%A', DateTime.now) > Could not find sub &strftime > > use DateTime::strftime; > P > > strftime('%A', DateTime.now) > Thursday > > I am assuming this behavior is a bug and is not expected.
If you update the original sample to export the sub (it won't work in either case now without that): $ cat Greetings.pm use v6; module Greetings { sub hello($name='World') is export { say "Hello $name"; } } Both cases work fine with a recent rakudo: $ ./perl6 -e 'use Greetings; hello("moon")' Hello moon $ ./perl6 > use Greetings; Nil > hello("moon"); Hello moon > This ticket is closable with tests. -- Will "Coke" Coleda