user
Task

Verify that a file called     **input.txt**     and   a directory called     **docs**     exist.

This should be done twice:

:   :   :   * once for the current working directory,   and
            * once for a file and a directory in the filesystem root.

Optional criteria (May 2015):   verify it works with:

:   :   :   * zero-length files
            * an unusual filename:     **`Abdu'l-Bahá.txt**
assistant
(formerly Perl 6)

```
my $path = "/etc/passwd";
say $path.IO.e ?? "Exists" !! "Does not exist";

given $path.IO {
    when :d { say "$path is a directory"; }
    when :f { say "$path is a regular file"; }
    when :e { say "$path is neither a directory nor a file, but it does exist"; }
    default { say "$path does not exist" }
}

```

`when` internally uses the smart match operator `~~`, so `when :e` really does `$given ~~ :e` instead of the method call `$given.e`; both test whether the file exists.

```
run ('touch', "♥ Unicode.txt");

say "♥ Unicode.txt".IO.e;      # "True"
say "♥ Unicode.txt".IO ~~ :e;  # same

```