# r28019 - in docs/Perl6/Spec: . S32-setting-library

```Author: wayland
Date: 2009-08-18 12:16:37 +0200 (Tue, 18 Aug 2009)
New Revision: 28019```
```
Modified:
docs/Perl6/Spec/S16-io.pod
docs/Perl6/Spec/S32-setting-library/IO.pod
Log:
S32/IO: Mention that Path can be used as an array of path elements
S16: Restrict filenames to POSIX

Modified: docs/Perl6/Spec/S16-io.pod
===================================================================
--- docs/Perl6/Spec/S16-io.pod  2009-08-18 09:47:04 UTC (rev 28018)
+++ docs/Perl6/Spec/S16-io.pod  2009-08-18 10:16:37 UTC (rev 28019)
@@ -103,16 +103,21 @@

-The default p{} only allows "/" as separator and does not allow path elements
-to contain
-characters that won't work on modern Windows and Unix like \ / ? % * : | " > <,
-etc. The reason for this is that portable paths are the default. If
-platform/filesystem specific behavior is really needed it should be shown in
+The default paths are portable paths.  These are POSIX-compatible (see
+POSIX.1-2008 sections4.7 and 3.276).  If
+platform/filesystem specific behavior is needed it should be shown in
the code by applying different sets of constraints (see below).

+The default constraints are to only allow "/" as separator and only allows
+POSIX filenames.  That means A-Z, a-z, 0-9, <period>, <underscore>, and
+<hyphen>.  Additionally, hyphen may not be the first character in the path.
+
+Any path that starts with a "/" is considered an absolute path, otherwise
+the path is considered relative.
+

-We allow windows style paths so converting and maintaining code on this
+We allow Windows style paths so converting and maintaining code on this
platform is not a pain.

my Path \$path = p:win{C:\Program Files\MS Access\file.file};
@@ -131,6 +136,11 @@
And for cases where this is a problem p:bin{} can be used as no checking is
done here, other than assuming that / is the separator.

+
+It is expected that other sets of constraints, such as VMS, DOS, and old-style
+Mac will be provided by modules.
+

Modified: docs/Perl6/Spec/S32-setting-library/IO.pod
===================================================================
--- docs/Perl6/Spec/S32-setting-library/IO.pod  2009-08-18 09:47:04 UTC (rev
28018)
+++ docs/Perl6/Spec/S32-setting-library/IO.pod  2009-08-18 10:16:37 UTC (rev
28019)
@@ -680,7 +680,7 @@
are usually created with the p{/path/to/file} syntax.  It could be a directory,
file, link, or something else OS-specific.

-    role Path {
+    role Path does Str does Array {
has Str \$.Type;
has Array of Str @.Elements;
has Array of IO::ACL @.ACLs;
@@ -698,6 +698,10 @@
C<\$.Type> can be C<File>, C<Directory>, C<Link>, or C<Other>.  See
C<.create()> method documentation for how it is set.

+When used as a Str, it allows some operations, so that it can be concatenated
+easily with other strings.  When used as an Array, it acts as an array of
+path elements.
+