CGI/Perl Guide | Learning Center | Forums | Advertise | Login
Site Search: in

  Main Index MAIN
Search Posts SEARCH
Who's Online WHO'S
Log in LOG

Home: Perl Programming Help: Beginner:
one line of perl in script, to reedit file



Oct 29, 2009, 5:01 AM

Post #1 of 1 (557 views)
one line of perl in script, to reedit file Can't Post


I am working with Win32, but run mks (Linux like) shell.

I made a makefile to compile a cpp program.

I used a makedepend call (in the makefile) to make the dependecies.

the line of makedepend is like this: makedepend -f- $< > $@

(The $< is the cpp fiel, and the $@ is the dependecy file that is created)

The content of the dependency file ( suppose is name is makedepout.dep) looks like this:


obj/SYS/VAR/VAL.obj: SYS/unarj.h C:/ISIX86/pssx86.226/include/stdio.h
obj/APP/MAIN.obj: C:/ISIX86/pssx86.226/include/stdarg.h

I need to have something like this: (*)

obj/VAL.obj: SYS/unarj.h C:/ISIX86/pssx86.226/include/stdio.h
obj/MAIN.obj: C:/ISIX86/pssx86.226/include/stdarg.h

(meaning remove the directories names, between the obj/ and the file name (that ends with obj)

I marked in red, the things I need to remove)

Now to perl :-)

after long efforts I came to the command to do the work, and tested it from console window.

cat makedepout.dep | perl -nle "next unless /^obj.+?([^\/]+.obj):\s+(.+)/; print \"obj/$1: $2\" "

This work and print to console what I marked as (*)

When I put it in the makefile - like this:

makedepend -f- $< | perl -nle "next unless /^obj.+?([^\/]+.obj):\s+(.+)/; print \"obj/$1: $2\" " > $@

(marked in blue where I insert it)

I get error:

syntax error at -e line 1, near "/:"

Since this is makefile, I know I have to put $$ instead of one and so I did

makedepend -f- $< | perl -nle "next unless /^obj.+?([^\/]+.obj):\s+(.+)/; print \"obj/$$1: $$2\" " > $@

get the same error.

Can anybody tell me what is wrong with this one line script ???

I also thought of making a small shell/batch file that do the job, and tried it too.

It is not printing anyting.

Can anybody help me with a short script that read the makedepout.dep file, leave only lines that start with obj then the file name and then : and then the files aftter that, like in the example I gave above ?

Thanks a lot



Search for (options) Powered by Gossamer Forum v.1.2.0

Web Applications & Managed Hosting Powered by Gossamer Threads
Visit our Mailing List Archives