Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer
 
PerlMonks  

Re^4: very new to perl; suggestions for porting this shell script to perl?

by Anonymous Monk
on May 30, 2011 at 23:53 UTC ( #907390=note: print w/ replies, xml ) Need Help??


in reply to Re^3: very new to perl; suggestions for porting this shell script to perl?
in thread very new to perl; suggestions for porting this shell script to perl?

It's working great! I've only made a few changes. I changed the (/^Exec=(\S+)/) back to (/^Exec=(.*)/) because I still want to preserve the flags present at the end of some "Exec=xxx" lines (for example: "Exec=pcmanfm-mod --find-files" which corresponds to a "Name=Search for Files and Folders"), while still excluding %f, %F, %u and %U from any entries, because these act as placeholders for the filenames or urls on which the user has right-clicked.

The new script did create a small issue, however. I noticed that it prints the submenus in a different order from how they're listed. Do you know of any simple ways to make it respect the order in which they're specified when they're assigned at "my $regex ="? If not, it's completely usable how it is and I'll keep it in mind as I'm reading some of the books you suggested.


Comment on Re^4: very new to perl; suggestions for porting this shell script to perl?
Re^5: very new to perl; suggestions for porting this shell script to perl?
by sinusoid (Initiate) on May 31, 2011 at 00:01 UTC
    Oops.. That last comment was mine. I had forgotten to login.
Re^5: very new to perl; suggestions for porting this shell script to perl?
by Cristoforo (Deacon) on May 31, 2011 at 00:08 UTC
    I'm glad to hear it works OK. :-)
    You never really know until you run it against some data I guess.

    Do you know of any simple ways to make it respect the order in which they're specified when they're assigned at "my $regex ="?
    That occured to me after I posted the code, but I wasn't sure it was necessary.

    Since your categories list is in alphabetical order, you could sort the keys in the print routine like:

    for my $category (sort keys %data).

    Glad to be of help!

    Update: Just for the record, if the order of records was not in sort order, a few small changes would handle that situation.

    At the top of the script, before the for loop, you would enter:

    my @cat = qw/ Audio Graphics Network Settings System Utility /; # in y +our desired order my $regex = join "|", @cat; my @files = glob "/usr/share/applications/*.desktop"; # as before

    Then a small change to the print routine:

    for my $category ( @cat ) { next unless exists $data{ $category }; print "Submenu = \"$category\" {\n"; . . . . .

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others chanting in the Monastery: (6)
As of 2014-08-29 06:21 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The best computer themed movie is:











    Results (275 votes), past polls