First shorter does not mean clearer (nor better), but it is possible to shorten your code to something like so: #!d:\perl\bin\perl.exe
$pth = "\\\\127.0.0.1\\bex";
opendir(Directory, $pth) or die "Cannot Open Directory";
@contents = grep {
m!^[Bb].+\.txt$! #assuming .txt ending
and
-M "$path\\$_" > 1
} readdir(Directory);
closedir(Directory);
A couple of other issues though. You do not need the splice as your regular expression would have eliminated it anyhow. and second I changed your regular expression because if you want to match a period in a regular expression you can do it one of two ways backwack it (i.e. \. )or in a character class (i.e. [.] ), the .txt in your regular expression would also match anything that ended with txt preceded by any character. update:A shorter solution for the whole thing (untested): #!d:\perl\bin\perl.exe
my $pth = "\\\\127.0.0.1\\bex";
opendir(Directory, $pth) or die "Cannot Open Directory";
while ( $_ = readdir(Directory) ) {
if ( m!^[Bb].+\.txt$! and -M "$path\\$_" > 1 ) {
open ( FILE, "$path\\$_" > 1 ) or die "$!";
while ( my $line = <FILE> ) {
print $line;
}
close(FILE);
}
}
closedir(Directory);
-enlil
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.
|