txt: ## special.md
  class IO::Special
  
  Path to special I/O device
  
  ```raku
  class IO::Special does IO { }
  
  ```
  
  Used as a [`$.path`](/type/IO/Handle#method_path) attribute in filehandles for special standard input `$*IN` and output `$*OUT` and `$*ERR`. Provides a bridged interface of [`IO::Handle`](/type/IO/Handle), mostly file tests and stringification.
  
  # [Methods](#class_IO::Special "go to top of document")[§](#Methods "direct link")
  
  ## [method new](#class_IO::Special "go to top of document")[§](#method_new "direct link")
  
  ```raku
  method new(:$!what!)
  
  ```
  
  Takes a single required attribute [what](/routine/what). It is unlikely that you will ever need to construct one of these objects yourself.
  
  ## [method what](#class_IO::Special "go to top of document")[§](#method_what "direct link")
  
  ```raku
  say $*IN.path.what;  # OUTPUT: «<STDIN>␤»
  say $*OUT.path.what; # OUTPUT: «<STDOUT>␤»
  say $*ERR.path.what; # OUTPUT: «<STDERR>␤»
  ```
  
  Returns one of the strings `'<STDIN>'`, `'<STDOUT>'`, or `'<STDERR>'`, specifying the type of the special IO device.
  
  ## [method WHICH](#class_IO::Special "go to top of document")[§](#method_WHICH "direct link")
  
  ```raku
  method WHICH(IO::Special:D: --> Str)
  ```
  
  This returns a string that identifies the object. The string is composed by the type of the instance (`IO::Special`) and the `what` attribute:
  
  ```raku
  $*IN.path.what;  # OUTPUT: «<STDIN>␤»
  $*IN.path.WHICH; # OUTPUT: «IO::Special<STDIN>␤»
  ```
  
  ## [method Str](#class_IO::Special "go to top of document")[§](#method_Str "direct link")
  
  ```raku
  method Str(IO::Special:D:)
  ```
  
  This returns `'<STDIN>'`, `'<STDOUT>'`, or `'<STDERR>'` as appropriate.
  
  ## [method IO](#class_IO::Special "go to top of document")[§](#method_IO "direct link")
  
  ```raku
  method IO(IO::Special:D: --> IO::Special)
  ```
  
  Returns the invocant.
  
  ```raku
  say $*IN.path.IO.what;  # OUTPUT: «<STDIN>␤»
  say $*IN.path.what;     # OUTPUT: «<STDIN>␤»
  ```
  
  ## [method e](#class_IO::Special "go to top of document")[§](#method_e "direct link")
  
  ```raku
  method e(IO::Special:D: --> True)
  ```
  
  The 'exists' file test operator, always returns `True`.
  
  ## [method d](#class_IO::Special "go to top of document")[§](#method_d "direct link")
  
  ```raku
  method d(IO::Special:D: --> False)
  ```
  
  The 'directory' file test operator, always returns `False`.
  
  ## [method f](#class_IO::Special "go to top of document")[§](#method_f "direct link")
  
  ```raku
  method f(IO::Special:D: --> False)
  ```
  
  The 'file' file test operator, always returns `False`.
  
  ## [method s](#class_IO::Special "go to top of document")[§](#method_s "direct link")
  
  ```raku
  method s(IO::Special:D: --> 0)
  ```
  
  The 'size' file test operator, always returns `0`.
  
  ## [method l](#class_IO::Special "go to top of document")[§](#method_l "direct link")
  
  ```raku
  method l(IO::Special:D: --> False)
  ```
  
  The 'symbolic links' file test operator, always returns `False`.
  
  ## [method r](#class_IO::Special "go to top of document")[§](#method_r "direct link")
  
  ```raku
  method r(IO::Special:D: --> Bool)
  ```
  
  The 'read access' file test operator, returns `True` if and only if this instance represents the standard input handle(`<STDIN>`).
  
  ## [method w](#class_IO::Special "go to top of document")[§](#method_w "direct link")
  
  ```raku
  method w(IO::Special:D: --> Bool)
  ```
  
  The 'write access' file test operator, returns `True` only if this instance represents either the standard output (`<STOUT>`) or the standard error (`<STDERR>`) handle.
  
  ## [method x](#class_IO::Special "go to top of document")[§](#method_x "direct link")
  
  ```raku
  method x(IO::Special:D: --> False)
  ```
  
  The 'execute access' file test operator, always returns `False`.
  
  ## [method modified](#class_IO::Special "go to top of document")[§](#method_modified "direct link")
  
  ```raku
  method modified(IO::Special:D: --> Instant)
  ```
  
  The last modified time for the filehandle. It always returns an [`Instant`](/type/Instant) type object.
  
  ## [method accessed](#class_IO::Special "go to top of document")[§](#method_accessed "direct link")
  
  ```raku
  method accessed(IO::Special:D: --> Instant)
  ```
  
  The last accessed time for the filehandle. It always returns an [`Instant`](/type/Instant) type object.
  
  ## [method changed](#class_IO::Special "go to top of document")[§](#method_changed "direct link")
  
  ```raku
  method changed(IO::Special:D: --> Instant)
  ```
  
  The last changed time for the filehandle. It always returns an [`Instant`](/type/Instant) type object.
  
  ## [method mode](#class_IO::Special "go to top of document")[§](#method_mode "direct link")
  
  ```raku
  method mode(IO::Special:D: --> Nil)
  ```
  
  The mode for the filehandle, it always returns [`Nil`](/type/Nil)
  