# New Ticket Created by "brian d foy"
# Please include the string: [perl #130456]
# in the subject line of all future correspondence about this issue.
# <URL: https://rt.perl.org/Ticket/Display.html?id=130456 >
If the HOME environment variable is not set (say, as in
non-interactive sessions), using $*HOME throws an exception:
$ unset HOME
$ echo $HOME
$ perl6 -e 'put "HOME is $*HOME"'
Use of uninitialized value of type Any in string context.
Methods .^name, .perl, .gist, or .say can be used to stringify it
to something meaningful.
in block <unit> at -e line 1
HOME is
Curiously, $*TMPDIR is /tmp if the TMPDIR environment variable is not
set.
Maybe that's good and maybe not. But, trying to use homedir blows up the
same way tmpdir does (https://rt.perl.org/Ticket/Display.html?id=130455):
$ perl6 -e 'homedir( "/Users/brian" ); put "HOME is $*HOME"'
No such method 'chdir' for invocant of type 'Any'
in block <unit> at -e line 1
But, homedir isn't documented outside of S16 even though it appears to
be there somewhere. Trying to set $*HOME directly doesn't work either,
which is certainly perplexing:
$ perl6 -e '$*HOME = "/Users/brian"; put "HOME is $*HOME"'
Cannot modify an immutable Any
in block <unit> at -e line 1
I can set a key is a completely different variable to get it to work:
$ perl6 -e '%*ENV<HOME> = "/Users/brian"; put "HOME is $*HOME"'
HOME is /Users/brian
And I can even set it to a directory that does not exist:
$ perl6 -e '%*ENV<HOME> = "/Users/brian/not-there"; put "HOME is $*HOME"'
HOME is /Users/brian/not-there
The $*HOME variable is listed in . If it isn't set, it's documented to
be Nil, but it is apparently Any. That also appears to mess with the REPL:
$ perl6
I ran into a problem while trying to set up Linenoise: Cannot
resolve caller new(IO::Path: Any); none of these signatures match:
(IO::Path $: Cool $path, :$SPEC = { ... }, :$CWD = { ... }, *%_)
(IO::Path $: :$basename!, :$dirname = "", :$volume = "",
:$SPEC = { ... }, :$CWD = { ... }, *%_)
(IO::Path $: *%_)
Continuing without tab completions or line editor
You may want to consider using rlwrap for simple line editor functionality
To exit type 'exit' or '^D'
> $*HOME
(Any)
>