Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl-Sensitive Sunglasses
 
PerlMonks  

Re^2: Find the last item in a series of files

by Marshall (Canon)
on Jun 16, 2017 at 23:54 UTC ( [id://1192994]=note: print w/replies, xml ) Need Help??


in reply to Re: Find the last item in a series of files
in thread Find the last item in a series of files

A simple split to two parts may not be enough depending upon the OP's filenames and how many '.' characters might be contained within those names. I think that a regex assignment would be more appropriate instead of a split. But it could be that this is all the OP needs.

I don't like your one line if..else because it is "hard to understand" and confers no execution advantage.

Anyway, a nice algorithm idea that compares favorably with the HoA ideas previously posted.

  • Comment on Re^2: Find the last item in a series of files

Replies are listed 'Best First'.
Re^3: Find the last item in a series of files
by Laurent_R (Canon) on Jun 17, 2017 at 09:21 UTC
    I agree with you. I chose split on the basis of the example provided in the OP (file.001, file.002, ...). A regex would be more robust for more complex filenames.

    I also think that the one-line version of the if ... else statement is less easy to understand (that's why I used the other version in the complete code version), I only wanted to show it could also be made more concise.

Re^3: Find the last item in a series of files
by CountZero (Bishop) on Jun 22, 2017 at 05:54 UTC
    A simple split to two parts may not be enough depending upon the OP's filenames and how many '.' characters might be contained within those names. I think that a regex assignment would be more appropriate instead of a split. But it could be that this is all the OP needs.

    That's why using File::Basename seems a good idea as it provides an easy interface to extract path, files-basename and extension.

    CountZero

    A program should be light and agile, its subroutines connected like a string of pearls. The spirit and intent of the program should be retained throughout. There should be neither too little or too much, neither needless loops nor useless variables, neither lack of structure nor overwhelming rigidity." - The Tao of Programming, 4.1 - Geoffrey James

    My blog: Imperial Deltronics
      Yes, File::Basename is a fine idea. But that won't get you out of providing a regex in this particular situation. The functions either take a list of strings like ".txt". ".doc". Or a regex in qr// form. Of course the enumerated suffix strings are the easiest way to use these functions. However, in this particular situation with varying numeric suffixes, ".001", etc., I would think a regex is needed even if using File::Basename.
        File::Basename::fileparse can take a regex as an argument to extract the suffixes, so using qr/\.\d{3}/ will pick up the varying suffixes allright.

        CountZero

        A program should be light and agile, its subroutines connected like a string of pearls. The spirit and intent of the program should be retained throughout. There should be neither too little or too much, neither needless loops nor useless variables, neither lack of structure nor overwhelming rigidity." - The Tao of Programming, 4.1 - Geoffrey James

        My blog: Imperial Deltronics

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://1192994]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others about the Monastery: (6)
As of 2024-04-19 11:54 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found