Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change
 
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 rifling through the Monastery: (6)
As of 2015-07-04 07:24 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (58 votes), past polls