Beefy Boxes and Bandwidth Generously Provided by pair Networks
Come for the quick hacks, stay for the epiphanies.
 
PerlMonks  

Playing with code found on Perlmonks

by oko1 (Deacon)
on Apr 13, 2008 at 16:10 UTC ( [id://680105]=CUFP: print w/replies, xml ) Need Help??

When I answer questions here, I often want to see exactly what kind of errors the posted code is going to throw - so I copy it, open a file in 'vi', paste it in, and (following a careful look at it to make sure that it's not going to do anything nasty to me) run it. The additional bits - e.g., adding on a Perl shebang and running 'chmod +x' on the file - are already shortcuts in my 'vi', but I thought that it would be nice to automate this part, at least. I've got "pmedit" linked to an icon on my Gnome toolbar, so all I have to do now is select the code and click the icon. The displayed file will already contain the code that I highlighted.

The following is a Bourne shell script, and requires 'Xdialog'. Please feel free to modify for other OSes and situations. Constructive comments are highly welcomed. :)

#!/bin/sh # Created by Ben Okopnik on Sun Apr 13 11:22:45 EDT 2008 cd /tmp label="New filename:" while : do fname=`Xdialog --stdout --inputbox "$label" 7 40` # Weird: '-f' doesn't handle '~', so we'll do it by hand fname=`echo $fname|sed 's/~/\/home\/ben/g'` if [ -f "$fname" ] then label="\"$fname\" already exists. New name:" else [ "$fname" = "" ] && exit xclip -o > "$fname" xterm -e vi "$fname" break fi done

Replies are listed 'Best First'.
Re: Playing with code found on Perlmonks
by ysth (Canon) on Apr 14, 2008 at 03:30 UTC
    I'm surprised Xdialog doesn't have a specific direct filename mode. I installed it to try it out, and (for me, anyway) it dragged in gtk 1.2 libraries, so I poked around for a gtk 2.0 equivalent and found zenity, which has handy "--file-selection --save" options.

      That's really odd - I thought (based on what it looks like) that 'Xdialog' was one of the old guard; the Athena Toolkit or something like that. Bleh. :(

      On the other hand, modifying it to use none of those libraries, at least for the dialog end, is trivial: change 'Xdialog' to 'dialog', remove the 'xterm -e' line from the 'vi' invocation, and launch the whole script as 'xterm -e pmedit'.

      
      -- 
      Human history becomes more and more a race between education and catastrophe. -- HG Wells
      
Re: Playing with code found on Perlmonks
by skx (Parson) on Apr 14, 2008 at 11:53 UTC

    This could be rewritten:

    fname=`echo $fname|sed 's/~/\/home\/ben/g'`

    Perhaps:

    fname=`echo $fname|perl -pe "s#~#$HOME#g"`
    Steve
    --

      Oh - I hadn't realized we were golfing. In Unix, as in Perl, TMTOWTDI.

      # Bourne shell and derivatives fname=`eval echo $fname` # Modern shells (e.g., Bash) fname=${fname/\~/$HOME}

      Your turn, m'sieu? :)

      
      -- 
      Human history becomes more and more a race between education and catastrophe. -- HG Wells
      

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others avoiding work at the Monastery: (7)
As of 2024-04-23 18:39 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found