NAME Regexp::Pattern::Path - Regexp patterns related to path VERSION This document describes version 0.003 of Regexp::Pattern::Path (from Perl distribution Regexp-Pattern-Path), released on 2020-01-03. SYNOPSIS use Regexp::Pattern; # exports re() my $re = re("Path::dirname_unix"); DESCRIPTION Regexp::Pattern is a convention for organizing reusable regex patterns. PATTERNS * dirname_unix Valid directory name on Unix. Just like "filename_unix" but allows '.' and '..' (although strictly speaking '.' and '..' are just special directory names instead of regular ones). Examples: "foo" =~ re("Path::dirname_unix"); # matches "foo bar" =~ re("Path::dirname_unix"); # matches Too short. "" =~ re("Path::dirname_unix"); # doesn't match Too long. "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" =~ re("Path::dirname_unix"); # doesn't match contains slash. "foo/bar" =~ re("Path::dirname_unix"); # doesn't match begins with slash. "/foo" =~ re("Path::dirname_unix"); # doesn't match ends with slash. "foo/" =~ re("Path::dirname_unix"); # doesn't match contains null (\0). "foo\0" =~ re("Path::dirname_unix"); # doesn't match "." =~ re("Path::dirname_unix"); # matches ".." =~ re("Path::dirname_unix"); # matches "..." =~ re("Path::dirname_unix"); # matches * filename_dos Valid filename on DOS (8.3/short filenames). The following rules are used in this pattern: 1. Contains 1-8 characters, optionally followed by a period and 0-3 characters (extension). 2. Valid characters include letters A-Z (a-z is also allowed in this regex), numbers 0-9, and the following special characters: _ underscore ^ caret $ dollar sign ~ tilde ! exclamation point # number sign % percent sign & ampersand hyphen (-) {} braces @ at sign ` single quote ' apostrophe () parentheses 3. The name cannot be one of the following reserved file names: CLOCK$, CON, AUX, COM1, COM2, COM3, COM4, LPT1, LPT2, LPT3, LPT4, NUL, and PRN. Examples: "FOO" =~ re("Path::filename_dos"); # matches Lowercase letters not allowed (convert your string to uppercase first if you want to accept lowercase letters). "foo" =~ re("Path::filename_dos"); # matches "FOOBARBA.TXT" =~ re("Path::filename_dos"); # matches Contains period other than as filename-extension separator. ".FOO.TXT" =~ re("Path::filename_dos"); # doesn't match Does not contain filename. ".TXT" =~ re("Path::filename_dos"); # doesn't match Empty. "" =~ re("Path::filename_dos"); # doesn't match Name too long. "FOOBARBAZ" =~ re("Path::filename_dos"); # doesn't match Extension too long. "FOOBARBA.TEXT" =~ re("Path::filename_dos"); # doesn't match reserved name CON. "CON" =~ re("Path::filename_dos"); # doesn't match "CONAUX" =~ re("Path::filename_dos"); # matches Starts with space. " FOO.BAR" =~ re("Path::filename_dos"); # doesn't match Contains space. "FOO .BAR" =~ re("Path::filename_dos"); # doesn't match "_\$!%-\@'^.~#&" =~ re("Path::filename_dos"); # matches "{}`()." =~ re("Path::filename_dos"); # matches Contains invalid character [ and ]. "FILE[1].TXT" =~ re("Path::filename_dos"); # doesn't match * filename_unix Valid filename on Unix. Length must be 1-255 characters. The only characters not allowed include "\0" (null) and "/" (forward slash, for path separator). Also cannot be '.' or '..'. Examples: "foo" =~ re("Path::filename_unix"); # matches "foo bar" =~ re("Path::filename_unix"); # matches Too short. "" =~ re("Path::filename_unix"); # doesn't match Too long. "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" =~ re("Path::filename_unix"); # doesn't match contains slash. "foo/bar" =~ re("Path::filename_unix"); # doesn't match begins with slash. "/foo" =~ re("Path::filename_unix"); # doesn't match ends with slash. "foo/" =~ re("Path::filename_unix"); # doesn't match contains null (\0). "foo\0" =~ re("Path::filename_unix"); # doesn't match Cannot be ".". "." =~ re("Path::filename_unix"); # doesn't match Cannot be "..". ".." =~ re("Path::filename_unix"); # doesn't match "..." =~ re("Path::filename_unix"); # matches * filename_windows Valid filename on Windows (long filenames). The following rules are used in this pattern: 1. Contains 1-260 characters (including extension). 2. Does not contain the characters \0, [\x01-\x1f], <, >, :, ", /, \, |, ?, *. 3. The name cannot be one of the following reserved file names: CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, and LPT9. 4. Does not end with a period. 5. Does not begin with a period. 6. Cannot be '.' or '..'. References: - Examples: Empty. "" =~ re("Path::filename_windows"); # doesn't match "FOO" =~ re("Path::filename_windows"); # matches "foo" =~ re("Path::filename_windows"); # matches "FOOBARBA.TXT" =~ re("Path::filename_windows"); # matches Starts with period. ".FOO.TXT" =~ re("Path::filename_windows"); # doesn't match Ends with period. "bar." =~ re("Path::filename_windows"); # doesn't match reserved name CON. "CON" =~ re("Path::filename_windows"); # doesn't match reserved name LPT3. "LPT3" =~ re("Path::filename_windows"); # doesn't match "CONAUX" =~ re("Path::filename_windows"); # matches "FOO .BAR" =~ re("Path::filename_windows"); # matches "foo[1].txt" =~ re("Path::filename_windows"); # matches "foo(2).txt" =~ re("Path::filename_windows"); # matches Contains invalid character \0. "foo\0" =~ re("Path::filename_windows"); # doesn't match Contains control character. "foo\b" =~ re("Path::filename_windows"); # doesn't match Contains invalid character /. "foo/bar" =~ re("Path::filename_windows"); # doesn't match Contains invalid characters <>. "foo" =~ re("Path::filename_windows"); # doesn't match Contains invalid character :. "foo:bar" =~ re("Path::filename_windows"); # doesn't match "foo's file" =~ re("Path::filename_windows"); # matches Contains invalid character ". "foo \"bar\"" =~ re("Path::filename_windows"); # doesn't match Contains invalid character \. "foo\\bar" =~ re("Path::filename_windows"); # doesn't match Contains invalid character |. "foo|bar" =~ re("Path::filename_windows"); # doesn't match Contains invalid character ?. "foo?" =~ re("Path::filename_windows"); # doesn't match Contains invalid character *. "foo*" =~ re("Path::filename_windows"); # doesn't match Too long. "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" =~ re("Path::filename_windows"); # doesn't match HOMEPAGE Please visit the project's homepage at . SOURCE Source repository is at . BUGS Please report any bugs or feature requests on the bugtracker website When submitting a bug or request, please include a test-file or a patch to an existing test-file that illustrates the bug or desired feature. SEE ALSO Regexp::Pattern AUTHOR perlancar COPYRIGHT AND LICENSE This software is copyright (c) 2020 by perlancar@cpan.org. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.