Beefy Boxes and Bandwidth Generously Provided by pair Networks
Do you know where your variables are?
 
PerlMonks  

Re^3: Perl script on windows node

by stevieb (Hermit)
on Apr 03, 2012 at 12:08 UTC ( #963228=note: print w/ replies, xml ) Need Help??


in reply to Re^2: Perl script on windows node
in thread Perl script on windows node

say() is the only feature being used from 5.10, so all you need to do is replace all instances of 'say' with 'print'. To keep the output the same, add a newline character (\n) to the end of each quoted string you are printing out.

EDIT: As pointed out by ww, I should have explicitly stated that along with replacing say with print, the 'use 5.10' line should be removed as well. Thanks!


Comment on Re^3: Perl script on windows node
Re^4: Perl script on windows node
by kaka_2 (Acolyte) on Apr 03, 2012 at 12:14 UTC
    Thanks Stevieb. I made the changes and compilation and execution was successfull but result is not satisfactory. It always says "File is not recent" where i see file was always got modified in last 120 seconds. Any thoughts?

      my $modified_within = 60 * 5; # 5 minutes

      Did you copy this line to the letter & number? - maybe you should adjust it to your needs.

      Cheers, Sören

      If you copy and paste this code as is and expect it to do what you want, it's not going to work. The variable $file needs to contain the path to a file for example:

      my $file = "C:\\stat.pl";

      With the value provided as an example the script will always pass through to the "File is not recent" message. You should alter the code to check for existing files. I'll leave that as an exercise for you.

      Well, if you're sure your looking at the right file, and that $modified_within is set to 60*2 or less, it may be a quirk on Windows. The code works here for me on my Ubuntu and FreeBSD machines.

      I don't run Perl on Windows, so hopefully someone else here can give the code a test, or perhaps spot something they may know doesn't work properly on the Win platform.

Re^4: Perl script on windows node
by kaka_2 (Acolyte) on Apr 03, 2012 at 12:35 UTC
    It seems working fine after using \\ in the path of file name as suggested by marto. Thank You all.
Re^3: Perl script on windows node
by ww (Bishop) on Apr 03, 2012 at 12:40 UTC
    Perhaps stevieb assumed kaka2 would know to remove use 5.010 as well, but it's probably a good idea to explicitly include that instruction ... especially when saying "all you need to do is replace...'say' with 'print'."
Re^4: Perl script on windows node
by kaka_2 (Acolyte) on Apr 03, 2012 at 13:31 UTC
    Guys. i need further help. As a action i need to run a command. so what i did is added below in the BOLD.
    #use 5.010; use strict; my $modified_within = 60 * 2; # 2 minutes my $size_limit = 1024 * 1024 * 2; # 2 MB my $OPCMSG = "C:\Program Files\HP\HP BTO Software\bin\win64\OpC\opc +msg.exe"; my $file = "H:\\Program Data\\HP\\HP BTO Software\\shared\\tmp\\queues +\\MsgQueue"; if ([stat $file]->[9] > time - $modified_within) { if (-s $file > $size_limit) { # print "File is recent, and over size limit"; } else { print "File is recent, but not over size limit"; $OPCMSG a=OM9 o=failover s=normal mag_t="Hello!! I am fine, hope you a +re doing well"; } } else { print "File is not recent"; }
    But it return me error saying <c> Bareword found where operator expected at C:\Migration\failover.pl line 17, near "$OPCMSG a" (Missing operator before a?) syntax error at C:\Migration\failover.pl line 17, near "$OPCMSG a" Substitution replacement not terminated at C:\Migration\failover.pl line 17. How can i run this command through script?
      It does not like:
      $OPCMSG a=OM9 o=failover s=normal mag_t="Hello!! etc.";
      where did that come from?

      Please don't ignore the formatting guidelines, this obviously looked wrong when you previewed the post. Your code:

      #use 5.010; use strict; use strict; my $modified_within = 60 * 2; # 2 minutes my $size_limit = 1024 * 1024 * 2; # 2 MB my $OPCMSG = "C:\Program Files\HP\HP BTO Software\bin\win64\OpC\opcmsg +.exe"; my $file = "H:\\Program Data\\HP\\HP BTO Software\\shared\\tmp\\queues +\\MsgQueue"; if ([stat $file]->[9] > time - $modified_within){ if (-s $file > $size_limit) { print "File is recent, and over size limit"; } else { print "File is recent, but not over size limit"; $OPCMSG a=OM9 o=failover s=normal mag_t="Hello!! I am fine, ho +pe you are doing well"; } } else { print "File is not recent"; }

      I notice you ignored my previous advice to test that files exist, resulting in "File is not recent" being displayed for non existent files. Where did you copy and past this line from?

      $OPCMSG a=OM9 o=failover s=normal mag_t="Hello!! I am fine, hope you a +re doing well";

      And more to the point what do you expect it to do? A sensible guess would be that you expect to run opsmsg.exe with these arguments, but you've no idea how to do so and expect people to work through your messed up code and work out what you're trying to do. Don't make posts hard to read with regards formatting, and explain exactly what you're trying to achieve. Making people guess what you expect your hard to read code is doing is a bad strategy. Don't copy and paste code you found/were given online without any understanding of what it does.

      To achieve what you want see the example under system. If you're actually interested in learning Perl I suggest you invest the time reading:

        Hi Marto,

        Thanks for the response. I found this forum today only and new to it so i did not get much time go through the formatting guidelines etc.

        That is correct as action i want to run this command which is a application command and it works in this way from command prompt well.

        ANd yes you are right i dont know how to do it on windows. On Unix i can write shell script and the line i added is from the thinking of same but it does not work with perl.

        Thanks for the resources provided to learn perl, for sure i will start learning now.

        This was urgent for me and that was the reason i asked you guys to write codes.

        issue has been fixed now and i can achieve my goal with the help of you guys.

        Thank You. -KAKA-

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others cooling their heels in the Monastery: (6)
As of 2014-10-02 10:35 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    What is your favourite meta-syntactic variable name?














    Results (52 votes), past polls