File extension is in extensions list: Difference between revisions
Content added Content deleted
(→{{header|Fortran}}: Follow the new requirements.) |
(add Perl) |
||
Line 564: | Line 564: | ||
{{out}} |
{{out}} |
||
<pre>%1 = ["text.txt", "text.TXT", "test.tar.gz", "test/test2.exe", "foo.c", "foo.C", "foo.C++", "document.pdf"]</pre> |
<pre>%1 = ["text.txt", "text.TXT", "test.tar.gz", "test/test2.exe", "foo.c", "foo.C", "foo.C++", "document.pdf"]</pre> |
||
=={{header|Perl}}== |
|||
Does the extra credit requirement. |
|||
{{trans|Perl 6}} |
|||
<lang perl>sub check_extension { |
|||
my ($filename, @extensions) = @_; |
|||
my $extensions = join '|', map quotemeta, @extensions; |
|||
scalar $filename =~ / \. (?: $extensions ) $ /xi |
|||
}</lang> |
|||
Testing: |
|||
<lang perl>my @extensions = ('zip', 'rar', '7z', 'gz', 'archive', 'A##', 'tar.bz2'); |
|||
my @files= ( |
|||
'MyData.a##', 'MyData.tar.Gz', 'MyData.gzip', 'MyData.7z.backup', |
|||
'MyData...', 'MyData', 'MyData_v1.0.tar.bz2', 'MyData_v1.0.bz2' |
|||
); |
|||
printf "%-19s - %s\n", |
|||
$_, check_extension($_, @extensions) ? 'true' : 'false' |
|||
for @files;</lang> |
|||
{{out}} |
|||
<pre> |
|||
MyData.a## - true |
|||
MyData.tar.Gz - true |
|||
MyData.gzip - false |
|||
MyData.7z.backup - false |
|||
MyData... - false |
|||
MyData - false |
|||
MyData_v1.0.tar.bz2 - true |
|||
MyData_v1.0.bz2 - false |
|||
</pre> |
|||
=={{header|Perl 6}}== |
=={{header|Perl 6}}== |