My previous message should read ".say for" instead of "say for". Sorry
On Sat, May 24, 2025 at 6:28 AM Clifton Wood <clifton.w...@gmail.com> wrote: > Just for fun, here's a similar one-liner using File::Find and PDF::Class: > > # Formatted for clarity; > use File::Find; > use PDF::Class; . > say for find( dir => ".", name => *.ends-with(".pdf") ).map( > sub ($_) { > CATCH { default { return 0 } }; > say "Checking { .absolute }..."; > PDF::Class.open($_).page-count > } > ).sum' > > It's a bit larger than the more elegant solution provided by Sean, but it > does include some nice to haves. > > > > On Sat, May 24, 2025 at 5:31 AM William Michels via perl6-users < > perl6-us...@perl.org> wrote: > >> Thanks, Sean! >> >> Do any of the various `PDF` modules work to solve your page-counting >> quest? >> >> I'll have to play around with your code a bit. Normally I would use >> `.dir(test => /:i \.pdf / )` to pull out PDF files. >> The closest U&L answer posted for your issue might be: >> >> >> https://unix.stackexchange.com/questions/651035/how-to-count-total-number-of-lines-of-all-txt-files/745652#745652 >> >> Cheers! >> >> >> >> On May 21, 2025, at 13:08, Sean McAfee <eef...@gmail.com> wrote: >> >> On Tue, May 20, 2025 at 12:51 PM William Michels via perl6-users < >> perl6-us...@perl.org> wrote: >> >>> If you haven't visited U&L StackExchange, you should! It's much less >>> 'siloed' than StackOverflow in that an OP might post a question requesting >>> a bash/sed/awk answer, but other answers are readily accepted (and >>> upvoted!) as well. Some good answers written in: bash, zsh, sed, awk, jq, >>> mlr, Ruby, Perl, and Raku. Check it out! >>> >> >> Cool! I'll have to drop by sometime. I've been moving to use Raku in >> place of shell scripts or commands more often. A short time ago I wanted >> to get a list of directories along with the total page count of all PDF >> files within them, sorted by the page counts, and I was able to do it with >> a short-ish Raku one-liner (broken into multiple lines here for clarity): >> >> .say for sort dir.map: { >> run('exiftool', .dir.grep(/'.pdf'$/), :out) >> .out.slurp.match(:g, /^^ 'Page Count' \N+? <( \d+ $$/).sum => ~$_ if >> .d >> } >> >> The one thing that's hardest for me to keep in mind is to use "\N" >> instead of ".", which here silently produces dramatically wrong results. >> >> >>