Loading ...
Sorry, an error occurred while loading the content.

Re: [PBML] trying to cp a file

Expand Messages
  • David Precious
    ... Save yourself hassle, and make your script more secure and portable, by using File::Copy: use File::Copy; File::Copy::copy($filename, junk.txt) or die
    Message 1 of 14 , Oct 28, 2011
    View Source
    • 0 Attachment
      On Friday 28 October 2011 19:13:46 rmillergraysharbor wrote:
      > Hi,
      > I'm trying to use perl on solaris to copy a file which may have spaces in
      > it. I can't even get it to work without spaces.
      >
      > On the command line, this works:
      > cp "/sds/ibr/waibr/submit/000000.1" junk.txt
      >
      > In perl, I've been trying combinations of system and ` and ", and I'm
      > getting: cp cannot access /sds/ibr/waibr/submit/000000.1
      >
      > If it works on the command line, why in the world won't it work in perl?
      >
      > My latest attempt is:
      > `cp "$filename" junk.txt`;
      >
      > Can anyone tell me what I'm doing wrong?


      Save yourself hassle, and make your script more secure and portable, by using
      File::Copy:

      use File::Copy;
      File::Copy::copy($filename, 'junk.txt)
      or die "Failed to copy file - $!";

      That may make it work; if not, the error message will be more helpful to help
      you see why.


      --
      David Precious ("bigpresh")
      http://www.preshweb.co.uk/

      "Programming is like sex. One mistake and you have to support
      it for the rest of your life". (Michael Sinz)
    • Paul.G
      system cp /sds/ibr/waibr/submit/000000.1 junk.txt ; give that a try. ________________________________ From: David Precious To:
      Message 2 of 14 , Oct 29, 2011
      View Source
      • 0 Attachment
        system "cp /sds/ibr/waibr/submit/000000.1 junk.txt";

        give that a try.



        ________________________________
        From: David Precious <davidp@...>
        To: perl-beginner@yahoogroups.com
        Sent: Saturday, 29 October 2011 5:04 AM
        Subject: Re: [PBML] trying to cp a file


         
        On Friday 28 October 2011 19:13:46 rmillergraysharbor wrote:
        > Hi,
        > I'm trying to use perl on solaris to copy a file which may have spaces in
        > it. I can't even get it to work without spaces.
        >
        > On the command line, this works:
        > cp "/sds/ibr/waibr/submit/000000.1" junk.txt
        >
        > In perl, I've been trying combinations of system and ` and ", and I'm
        > getting: cp cannot access /sds/ibr/waibr/submit/000000.1
        >
        > If it works on the command line, why in the world won't it work in perl?
        >
        > My latest attempt is:
        > `cp "$filename" junk.txt`;
        >
        > Can anyone tell me what I'm doing wrong?

        Save yourself hassle, and make your script more secure and portable, by using
        File::Copy:

        use File::Copy;
        File::Copy::copy($filename, 'junk.txt)
        or die "Failed to copy file - $!";

        That may make it work; if not, the error message will be more helpful to help
        you see why.

        --
        David Precious ("bigpresh")
        http://www.preshweb.co.uk/

        "Programming is like sex. One mistake and you have to support
        it for the rest of your life". (Michael Sinz)



        [Non-text portions of this message have been removed]
      • Chankey Pathak
        Use System command. ... -- Regards, Chankey Pathak [Non-text portions of this message have been removed]
        Message 3 of 14 , Oct 29, 2011
        View Source
        • 0 Attachment
          Use System command.

          On Sat, Oct 29, 2011 at 4:59 PM, Paul.G <medura43@...> wrote:

          > **
          >
          >
          > system "cp /sds/ibr/waibr/submit/000000.1 junk.txt";
          >
          > give that a try.
          >
          > ________________________________
          > From: David Precious <davidp@...>
          > To: perl-beginner@yahoogroups.com
          > Sent: Saturday, 29 October 2011 5:04 AM
          > Subject: Re: [PBML] trying to cp a file
          >
          >
          > On Friday 28 October 2011 19:13:46 rmillergraysharbor wrote:
          > > Hi,
          > > I'm trying to use perl on solaris to copy a file which may have spaces in
          > > it. I can't even get it to work without spaces.
          > >
          > > On the command line, this works:
          > > cp "/sds/ibr/waibr/submit/000000.1" junk.txt
          > >
          > > In perl, I've been trying combinations of system and ` and ", and I'm
          > > getting: cp cannot access /sds/ibr/waibr/submit/000000.1
          > >
          > > If it works on the command line, why in the world won't it work in perl?
          > >
          > > My latest attempt is:
          > > `cp "$filename" junk.txt`;
          > >
          > > Can anyone tell me what I'm doing wrong?
          >
          > Save yourself hassle, and make your script more secure and portable, by
          > using
          > File::Copy:
          >
          > use File::Copy;
          > File::Copy::copy($filename, 'junk.txt)
          > or die "Failed to copy file - $!";
          >
          > That may make it work; if not, the error message will be more helpful to
          > help
          > you see why.
          >
          > --
          > David Precious ("bigpresh")
          > http://www.preshweb.co.uk/
          >
          > "Programming is like sex. One mistake and you have to support
          > it for the rest of your life". (Michael Sinz)
          >
          > [Non-text portions of this message have been removed]
          >
          >
          >



          --
          Regards,
          Chankey Pathak <http://javaenthusiastic.blogspot.com>


          [Non-text portions of this message have been removed]
        • Yatin Jadhav
          You can also try parsing varialbles as $a = /sds/ibr/waibr/submit/000000.1 junk.txt system( cp $a ); or if no variables are included:
          Message 4 of 14 , Oct 29, 2011
          View Source
          • 0 Attachment
            You can also try parsing varialbles as
            $a = "/sds/ibr/waibr/submit/000000.1 junk.txt"
            system("cp $a");

            or if no variables are included:

            system('cp /sds/ibr/waibr/submit/000000.1 junk.txt');


            It also works with windows based systems just give any dos command :

            system ("copy D:/sds/ibr/waibr/submit/000000.1 junk.txt");

            Regards,
            yatin


            ________________________________
            From: Paul.G <medura43@...>
            To: "perl-beginner@yahoogroups.com" <perl-beginner@yahoogroups.com>
            Sent: Saturday, October 29, 2011 4:59 PM
            Subject: Re: [PBML] trying to cp a file


             
            system "cp /sds/ibr/waibr/submit/000000.1 junk.txt";

            give that a try.

            ________________________________
            From: David Precious <davidp@...>
            To: perl-beginner@yahoogroups.com
            Sent: Saturday, 29 October 2011 5:04 AM
            Subject: Re: [PBML] trying to cp a file

             
            On Friday 28 October 2011 19:13:46 rmillergraysharbor wrote:
            > Hi,
            > I'm trying to use perl on solaris to copy a file which may have spaces in
            > it. I can't even get it to work without spaces.
            >
            > On the command line, this works:
            > cp "/sds/ibr/waibr/submit/000000.1" junk.txt
            >
            > In perl, I've been trying combinations of system and ` and ", and I'm
            > getting: cp cannot access /sds/ibr/waibr/submit/000000.1
            >
            > If it works on the command line, why in the world won't it work in perl?
            >
            > My latest attempt is:
            > `cp "$filename" junk.txt`;
            >
            > Can anyone tell me what I'm doing wrong?

            Save yourself hassle, and make your script more secure and portable, by using
            File::Copy:

            use File::Copy;
            File::Copy::copy($filename, 'junk.txt)
            or die "Failed to copy file - $!";

            That may make it work; if not, the error message will be more helpful to help
            you see why.

            --
            David Precious ("bigpresh")
            http://www.preshweb.co.uk/

            "Programming is like sex. One mistake and you have to support
            it for the rest of your life". (Michael Sinz)

            [Non-text portions of this message have been removed]




            [Non-text portions of this message have been removed]
          • Paul.G
            Can t speak for windows, but I think for linux the brackets are not required. ________________________________ From: Yatin Jadhav To:
            Message 5 of 14 , Oct 29, 2011
            View Source
            • 0 Attachment
              Can't speak for windows, but I think for linux the brackets are not required.



              ________________________________
              From: Yatin Jadhav <yatinjdhv@...>
              To: "perl-beginner@yahoogroups.com" <perl-beginner@yahoogroups.com>
              Sent: Saturday, 29 October 2011 9:54 PM
              Subject: Re: [PBML] trying to cp a file


               
              You can also try parsing varialbles as
              $a = "/sds/ibr/waibr/submit/000000.1 junk.txt"
              system("cp $a");

              or if no variables are included:

              system('cp /sds/ibr/waibr/submit/000000.1 junk.txt');

              It also works with windows based systems just give any dos command :

              system ("copy D:/sds/ibr/waibr/submit/000000.1 junk.txt");

              Regards,
              yatin

              ________________________________
              From: Paul.G <medura43@...>
              To: "perl-beginner@yahoogroups.com" <perl-beginner@yahoogroups.com>
              Sent: Saturday, October 29, 2011 4:59 PM
              Subject: Re: [PBML] trying to cp a file

               
              system "cp /sds/ibr/waibr/submit/000000.1 junk.txt";

              give that a try.

              ________________________________
              From: David Precious <davidp@...>
              To: perl-beginner@yahoogroups.com
              Sent: Saturday, 29 October 2011 5:04 AM
              Subject: Re: [PBML] trying to cp a file

               
              On Friday 28 October 2011 19:13:46 rmillergraysharbor wrote:
              > Hi,
              > I'm trying to use perl on solaris to copy a file which may have spaces in
              > it. I can't even get it to work without spaces.
              >
              > On the command line, this works:
              > cp "/sds/ibr/waibr/submit/000000.1" junk.txt
              >
              > In perl, I've been trying combinations of system and ` and ", and I'm
              > getting: cp cannot access /sds/ibr/waibr/submit/000000.1
              >
              > If it works on the command line, why in the world won't it work in perl?
              >
              > My latest attempt is:
              > `cp "$filename" junk.txt`;
              >
              > Can anyone tell me what I'm doing wrong?

              Save yourself hassle, and make your script more secure and portable, by using
              File::Copy:

              use File::Copy;
              File::Copy::copy($filename, 'junk.txt)
              or die "Failed to copy file - $!";

              That may make it work; if not, the error message will be more helpful to help
              you see why.

              --
              David Precious ("bigpresh")
              http://www.preshweb.co.uk/

              "Programming is like sex. One mistake and you have to support
              it for the rest of your life". (Michael Sinz)

              [Non-text portions of this message have been removed]

              [Non-text portions of this message have been removed]




              [Non-text portions of this message have been removed]
            • rmillergraysharbor
              After a nice long weekend, I am back trying to cp a file in perl. I am on a Sun Solaris box. Thanks for all of your responses, but still no luck. I ve tried 3
              Message 6 of 14 , Oct 31, 2011
              View Source
              • 0 Attachment
                After a nice long weekend, I am back trying to cp a file in perl.
                I am on a Sun Solaris box.

                Thanks for all of your responses, but still no luck.

                I've tried 3 things.
                ________________________________________________
                use File::Copy;
                my($filename) = `ls -at1 /sds/ibr/waibrs/submit/SPD/00*`;
                print $filename;
                File::Copy::copy("$filename",'junk.txt')
                or die "Failed to copy file - $!";

                Getting:
                /sds/ibr/waibrs/submit/SPD/000000.3
                Unsuccessful open on filename containing newline at /usr/local/lib/perl5/5.8.0/F ile/Copy.pm line 119.
                Failed to copy file - No such file or directory at ./test.sh line 11.

                I also tried with " instead of ' around junk.txt.
                Please note that it can print $filename, so it can find $filename, just not within the context of my copy command. ??
                ________________________________________________________________


                my($filename) = `ls -at1 /sds/ibr/waibrs/submit/SPD/00*`;
                print $filename;
                system "cp /sds/ibr/waibr/submit/000000.1 junk.txt"

                Getting:
                /sds/ibr/waibrs/submit/SPD/000000.3
                cp: Insufficient arguments (1)
                Usage: cp [-f] [-i] [-p] [-@] f1 f2
                cp [-f] [-i] [-p] [-@] f1 ... fn d1
                cp -r|-R [-H|-L|-P] [-f] [-i] [-p] [-@] d1 ... dn-1 dn
                sh: junk.txt: not found

                Again, it prints $filename, so it can find $filename, but not within the context of my command.

                Also, I don't think this would work when there are spaces in the filename, will it?

                ___________________________________________________
                Per parsing variables, I tried:

                my($filename) = `ls -at1 /sds/ibr/waibrs/submit/SPD/00*`;
                print $filename;
                $a = "/sds/ibr/waibr/submit/000000.1 junk.txt"
                system("cp $a");

                I get
                /sds/ibr/waibrs/submit/SPD/000000.3
                Can't call method "cp" without a package or object reference at ./test.sh line 15.


                Thanks again for any help.
                Regina




                --- In perl-beginner@yahoogroups.com, "Paul.G" <medura43@...> wrote:
                >
                > Can't speak for windows, but I think for linux the brackets are not required.
                >
                >
                >
                > ________________________________
                > From: Yatin Jadhav <yatinjdhv@...>
                > To: "perl-beginner@yahoogroups.com" <perl-beginner@yahoogroups.com>
                > Sent: Saturday, 29 October 2011 9:54 PM
                > Subject: Re: [PBML] trying to cp a file
                >
                >
                >  
                > You can also try parsing varialbles as
                > $a = "/sds/ibr/waibr/submit/000000.1 junk.txt"
                > system("cp $a");
                >
                > or if no variables are included:
                >
                > system('cp /sds/ibr/waibr/submit/000000.1 junk.txt');
                >
                > It also works with windows based systems just give any dos command :
                >
                > system ("copy D:/sds/ibr/waibr/submit/000000.1 junk.txt");
                >
                > Regards,
                > yatin
                >
                > ________________________________
                > From: Paul.G <medura43@...>
                > To: "perl-beginner@yahoogroups.com" <perl-beginner@yahoogroups.com>
                > Sent: Saturday, October 29, 2011 4:59 PM
                > Subject: Re: [PBML] trying to cp a file
                >
                >  
                > system "cp /sds/ibr/waibr/submit/000000.1 junk.txt";
                >
                > give that a try.
                >
                > ________________________________
                > From: David Precious <davidp@...>
                > To: perl-beginner@yahoogroups.com
                > Sent: Saturday, 29 October 2011 5:04 AM
                > Subject: Re: [PBML] trying to cp a file
                >
                >  
                > On Friday 28 October 2011 19:13:46 rmillergraysharbor wrote:
                > > Hi,
                > > I'm trying to use perl on solaris to copy a file which may have spaces in
                > > it. I can't even get it to work without spaces.
                > >
                > > On the command line, this works:
                > > cp "/sds/ibr/waibr/submit/000000.1" junk.txt
                > >
                > > In perl, I've been trying combinations of system and ` and ", and I'm
                > > getting: cp cannot access /sds/ibr/waibr/submit/000000.1
                > >
                > > If it works on the command line, why in the world won't it work in perl?
                > >
                > > My latest attempt is:
                > > `cp "$filename" junk.txt`;
                > >
                > > Can anyone tell me what I'm doing wrong?
                >
                > Save yourself hassle, and make your script more secure and portable, by using
                > File::Copy:
                >
                > use File::Copy;
                > File::Copy::copy($filename, 'junk.txt)
                > or die "Failed to copy file - $!";
                >
                > That may make it work; if not, the error message will be more helpful to help
                > you see why.
                >
                > --
                > David Precious ("bigpresh")
                > http://www.preshweb.co.uk/
                >
                > "Programming is like sex. One mistake and you have to support
                > it for the rest of your life". (Michael Sinz)
                >
                > [Non-text portions of this message have been removed]
                >
                > [Non-text portions of this message have been removed]
                >
                >
                >
                >
                > [Non-text portions of this message have been removed]
                >
              • Rajagopal, Jay
                Did you chomp? ... From: perl-beginner@yahoogroups.com [mailto:perl-beginner@yahoogroups.com] On Behalf Of rmillergraysharbor Sent: Monday, October 31, 2011
                Message 7 of 14 , Oct 31, 2011
                View Source
                • 0 Attachment
                  Did you chomp?

                  -----Original Message-----
                  From: perl-beginner@yahoogroups.com [mailto:perl-beginner@yahoogroups.com] On Behalf Of rmillergraysharbor
                  Sent: Monday, October 31, 2011 1:57 PM
                  To: perl-beginner@yahoogroups.com
                  Subject: Re: [PBML] trying to cp a file

                  After a nice long weekend, I am back trying to cp a file in perl.
                  I am on a Sun Solaris box.

                  Thanks for all of your responses, but still no luck.

                  I've tried 3 things.
                  ________________________________________________
                  use File::Copy;
                  my($filename) = `ls -at1 /sds/ibr/waibrs/submit/SPD/00*`; print $filename;
                  File::Copy::copy("$filename",'junk.txt')
                  or die "Failed to copy file - $!";

                  Getting:
                  /sds/ibr/waibrs/submit/SPD/000000.3
                  Unsuccessful open on filename containing newline at /usr/local/lib/perl5/5.8.0/F ile/Copy.pm line 119.
                  Failed to copy file - No such file or directory at ./test.sh line 11.

                  I also tried with " instead of ' around junk.txt.
                  Please note that it can print $filename, so it can find $filename, just not within the context of my copy command. ??
                  ________________________________________________________________


                  my($filename) = `ls -at1 /sds/ibr/waibrs/submit/SPD/00*`; print $filename; system "cp /sds/ibr/waibr/submit/000000.1 junk.txt"

                  Getting:
                  /sds/ibr/waibrs/submit/SPD/000000.3
                  cp: Insufficient arguments (1)
                  Usage: cp [-f] [-i] [-p] [-@] f1 f2
                  cp [-f] [-i] [-p] [-@] f1 ... fn d1
                  cp -r|-R [-H|-L|-P] [-f] [-i] [-p] [-@] d1 ... dn-1 dn
                  sh: junk.txt: not found

                  Again, it prints $filename, so it can find $filename, but not within the context of my command.

                  Also, I don't think this would work when there are spaces in the filename, will it?

                  ___________________________________________________
                  Per parsing variables, I tried:

                  my($filename) = `ls -at1 /sds/ibr/waibrs/submit/SPD/00*`; print $filename; $a = "/sds/ibr/waibr/submit/000000.1 junk.txt"
                  system("cp $a");

                  I get
                  /sds/ibr/waibrs/submit/SPD/000000.3
                  Can't call method "cp" without a package or object reference at ./test.sh line 15.


                  Thanks again for any help.
                  Regina




                  --- In perl-beginner@yahoogroups.com, "Paul.G" <medura43@...> wrote:
                  >
                  > Can't speak for windows, but I think for linux the brackets are not required.
                  >
                  >
                  >
                  > ________________________________
                  > From: Yatin Jadhav <yatinjdhv@...>
                  > To: "perl-beginner@yahoogroups.com" <perl-beginner@yahoogroups.com>
                  > Sent: Saturday, 29 October 2011 9:54 PM
                  > Subject: Re: [PBML] trying to cp a file
                  >
                  >
                  > Â
                  > You can also try parsing varialbles as $a =
                  > "/sds/ibr/waibr/submit/000000.1 junk.txt"
                  > system("cp $a");
                  >
                  > or if no variables are included:
                  >
                  > system('cp /sds/ibr/waibr/submit/000000.1 junk.txt');
                  >
                  > It also works with windows based systems just give any dos command :
                  >
                  > system ("copy D:/sds/ibr/waibr/submit/000000.1 junk.txt");
                  >
                  > Regards,
                  > yatin
                  >
                  > ________________________________
                  > From: Paul.G <medura43@...>
                  > To: "perl-beginner@yahoogroups.com" <perl-beginner@yahoogroups.com>
                  > Sent: Saturday, October 29, 2011 4:59 PM
                  > Subject: Re: [PBML] trying to cp a file
                  >
                  > Â
                  > system "cp /sds/ibr/waibr/submit/000000.1 junk.txt";
                  >
                  > give that a try.
                  >
                  > ________________________________
                  > From: David Precious <davidp@...>
                  > To: perl-beginner@yahoogroups.com
                  > Sent: Saturday, 29 October 2011 5:04 AM
                  > Subject: Re: [PBML] trying to cp a file
                  >
                  > Â
                  > On Friday 28 October 2011 19:13:46 rmillergraysharbor wrote:
                  > > Hi,
                  > > I'm trying to use perl on solaris to copy a file which may have
                  > > spaces in it. I can't even get it to work without spaces.
                  > >
                  > > On the command line, this works:
                  > > cp "/sds/ibr/waibr/submit/000000.1" junk.txt
                  > >
                  > > In perl, I've been trying combinations of system and ` and ", and
                  > > I'm
                  > > getting: cp cannot access /sds/ibr/waibr/submit/000000.1
                  > >
                  > > If it works on the command line, why in the world won't it work in perl?
                  > >
                  > > My latest attempt is:
                  > > `cp "$filename" junk.txt`;
                  > >
                  > > Can anyone tell me what I'm doing wrong?
                  >
                  > Save yourself hassle, and make your script more secure and portable,
                  > by using
                  > File::Copy:
                  >
                  > use File::Copy;
                  > File::Copy::copy($filename, 'junk.txt) or die "Failed to copy file -
                  > $!";
                  >
                  > That may make it work; if not, the error message will be more helpful
                  > to help you see why.
                  >
                  > --
                  > David Precious ("bigpresh")
                  > http://www.preshweb.co.uk/
                  >
                  > "Programming is like sex. One mistake and you have to support it for
                  > the rest of your life". (Michael Sinz)
                  >
                  > [Non-text portions of this message have been removed]
                  >
                  > [Non-text portions of this message have been removed]
                  >
                  >
                  >
                  >
                  > [Non-text portions of this message have been removed]
                  >




                  ------------------------------------

                  Unsubscribing info is here: http://help.yahoo.com/help/us/groups/groups-32.htmlYahoo! Groups Links




                  T. Rowe Price (including T. Rowe Price Group, Inc. and its affiliates) and its associates do not provide legal or tax advice. Any tax-related discussion contained in this e-mail, including any attachments, is not intended or written to be used, and cannot be used, for the purpose of (i) avoiding any tax penalties or (ii) promoting, marketing, or recommending to any other party any transaction or matter addressed herein. Please consult your independent legal counsel and/or professional tax advisor regarding any legal or tax issues raised in this e-mail.

                  The contents of this e-mail and any attachments are intended solely for the use of the named addressee(s) and may contain confidential and/or privileged information. Any unauthorized use, copying, disclosure, or distribution of the contents of this e-mail is strictly prohibited by the sender and may be unlawful. If you are not the intended recipient, please notify the sender immediately and delete this e-mail.
                • merlyn@stonehenge.com
                  ... rmillergraysharbor my($filename) = `ls -at1 rmillergraysharbor /sds/ibr/waibrs/submit/SPD/00*`; Why are you using ls when Perl is perfectly good at
                  Message 8 of 14 , Oct 31, 2011
                  View Source
                  • 0 Attachment
                    >>>>> "rmillergraysharbor" == rmillergraysharbor <rmiller@...-harbor.wa.us> writes:

                    rmillergraysharbor> my($filename) = `ls -at1
                    rmillergraysharbor> /sds/ibr/waibrs/submit/SPD/00*`;

                    Why are you using "ls" when Perl is perfectly good at globbing?

                    my @names = glob "/sds/ibr/waibrs/submit/SPD/00*";

                    And then figure out which name you want.

                    --
                    Randal L. Schwartz - Stonehenge Consulting Services, Inc. - +1 503 777 0095
                    <merlyn@...> <URL:http://www.stonehenge.com/merlyn/>
                    Smalltalk/Perl/Unix consulting, Technical writing, Comedy, etc. etc.
                    See http://methodsandmessages.posterous.com/ for Smalltalk discussion
                  • Regina Miller
                    Because I want the latest one, so I need them in order, not by name, but by datetime. ... From: Randal L. Schwartz [mailto:merlyn@stonehenge.com] Sent: Monday,
                    Message 9 of 14 , Oct 31, 2011
                    View Source
                    • 0 Attachment
                      Because I want the latest one, so I need them in order, not by name, but
                      by datetime.


                      -----Original Message-----
                      From: Randal L. Schwartz [mailto:merlyn@...]
                      Sent: Monday, October 31, 2011 11:01 AM
                      To: Regina Miller
                      Cc: perl-beginner@yahoogroups.com
                      Subject: Re: [PBML] trying to cp a file

                      >>>>> "rmillergraysharbor" == rmillergraysharbor
                      <rmiller@...-harbor.wa.us> writes:

                      rmillergraysharbor> my($filename) = `ls -at1
                      rmillergraysharbor> /sds/ibr/waibrs/submit/SPD/00*`;

                      Why are you using "ls" when Perl is perfectly good at globbing?

                      my @names = glob "/sds/ibr/waibrs/submit/SPD/00*";

                      And then figure out which name you want.

                      --
                      Randal L. Schwartz - Stonehenge Consulting Services, Inc. - +1 503 777
                      0095 <merlyn@...> <URL:http://www.stonehenge.com/merlyn/>
                      Smalltalk/Perl/Unix consulting, Technical writing, Comedy, etc. etc.
                      See http://methodsandmessages.posterous.com/ for Smalltalk discussion
                    • rmillergraysharbor
                      That was it! I didn t chomp! Oh, thank you. And thanks to everyone for their help. Regina
                      Message 10 of 14 , Oct 31, 2011
                      View Source
                      • 0 Attachment
                        That was it!
                        I didn't chomp!

                        Oh, thank you.

                        And thanks to everyone for their help.

                        Regina

                        --- In perl-beginner@yahoogroups.com, "Rajagopal, Jay" <jay_rajagopal@...> wrote:
                        >
                        > Did you chomp?
                        >
                        > -----Original Message-----
                        > From: perl-beginner@yahoogroups.com [mailto:perl-beginner@yahoogroups.com] On Behalf Of rmillergraysharbor
                        > Sent: Monday, October 31, 2011 1:57 PM
                        > To: perl-beginner@yahoogroups.com
                        > Subject: Re: [PBML] trying to cp a file
                        >
                        > After a nice long weekend, I am back trying to cp a file in perl.
                        > I am on a Sun Solaris box.
                        >
                        > Thanks for all of your responses, but still no luck.
                        >
                        > I've tried 3 things.
                        > ________________________________________________
                        > use File::Copy;
                        > my($filename) = `ls -at1 /sds/ibr/waibrs/submit/SPD/00*`; print $filename;
                        > File::Copy::copy("$filename",'junk.txt')
                        > or die "Failed to copy file - $!";
                        >
                        > Getting:
                        > /sds/ibr/waibrs/submit/SPD/000000.3
                        > Unsuccessful open on filename containing newline at /usr/local/lib/perl5/5.8.0/F ile/Copy.pm line 119.
                        > Failed to copy file - No such file or directory at ./test.sh line 11.
                        >
                        > I also tried with " instead of ' around junk.txt.
                        > Please note that it can print $filename, so it can find $filename, just not within the context of my copy command. ??
                        > ________________________________________________________________
                        >
                        >
                        > my($filename) = `ls -at1 /sds/ibr/waibrs/submit/SPD/00*`; print $filename; system "cp /sds/ibr/waibr/submit/000000.1 junk.txt"
                        >
                        > Getting:
                        > /sds/ibr/waibrs/submit/SPD/000000.3
                        > cp: Insufficient arguments (1)
                        > Usage: cp [-f] [-i] [-p] [-@] f1 f2
                        > cp [-f] [-i] [-p] [-@] f1 ... fn d1
                        > cp -r|-R [-H|-L|-P] [-f] [-i] [-p] [-@] d1 ... dn-1 dn
                        > sh: junk.txt: not found
                        >
                        > Again, it prints $filename, so it can find $filename, but not within the context of my command.
                        >
                        > Also, I don't think this would work when there are spaces in the filename, will it?
                        >
                        > ___________________________________________________
                        > Per parsing variables, I tried:
                        >
                        > my($filename) = `ls -at1 /sds/ibr/waibrs/submit/SPD/00*`; print $filename; $a = "/sds/ibr/waibr/submit/000000.1 junk.txt"
                        > system("cp $a");
                        >
                        > I get
                        > /sds/ibr/waibrs/submit/SPD/000000.3
                        > Can't call method "cp" without a package or object reference at ./test.sh line 15.
                        >
                        >
                        > Thanks again for any help.
                        > Regina
                        >
                        >
                        >
                        >
                        > --- In perl-beginner@yahoogroups.com, "Paul.G" <medura43@> wrote:
                        > >
                        > > Can't speak for windows, but I think for linux the brackets are not required.
                        > >
                        > >
                        > >
                        > > ________________________________
                        > > From: Yatin Jadhav <yatinjdhv@>
                        > > To: "perl-beginner@yahoogroups.com" <perl-beginner@yahoogroups.com>
                        > > Sent: Saturday, 29 October 2011 9:54 PM
                        > > Subject: Re: [PBML] trying to cp a file
                        > >
                        > >
                        > > Â
                        > > You can also try parsing varialbles as $a =
                        > > "/sds/ibr/waibr/submit/000000.1 junk.txt"
                        > > system("cp $a");
                        > >
                        > > or if no variables are included:
                        > >
                        > > system('cp /sds/ibr/waibr/submit/000000.1 junk.txt');
                        > >
                        > > It also works with windows based systems just give any dos command :
                        > >
                        > > system ("copy D:/sds/ibr/waibr/submit/000000.1 junk.txt");
                        > >
                        > > Regards,
                        > > yatin
                        > >
                        > > ________________________________
                        > > From: Paul.G <medura43@>
                        > > To: "perl-beginner@yahoogroups.com" <perl-beginner@yahoogroups.com>
                        > > Sent: Saturday, October 29, 2011 4:59 PM
                        > > Subject: Re: [PBML] trying to cp a file
                        > >
                        > > Â
                        > > system "cp /sds/ibr/waibr/submit/000000.1 junk.txt";
                        > >
                        > > give that a try.
                        > >
                        > > ________________________________
                        > > From: David Precious <davidp@>
                        > > To: perl-beginner@yahoogroups.com
                        > > Sent: Saturday, 29 October 2011 5:04 AM
                        > > Subject: Re: [PBML] trying to cp a file
                        > >
                        > > Â
                        > > On Friday 28 October 2011 19:13:46 rmillergraysharbor wrote:
                        > > > Hi,
                        > > > I'm trying to use perl on solaris to copy a file which may have
                        > > > spaces in it. I can't even get it to work without spaces.
                        > > >
                        > > > On the command line, this works:
                        > > > cp "/sds/ibr/waibr/submit/000000.1" junk.txt
                        > > >
                        > > > In perl, I've been trying combinations of system and ` and ", and
                        > > > I'm
                        > > > getting: cp cannot access /sds/ibr/waibr/submit/000000.1
                        > > >
                        > > > If it works on the command line, why in the world won't it work in perl?
                        > > >
                        > > > My latest attempt is:
                        > > > `cp "$filename" junk.txt`;
                        > > >
                        > > > Can anyone tell me what I'm doing wrong?
                        > >
                        > > Save yourself hassle, and make your script more secure and portable,
                        > > by using
                        > > File::Copy:
                        > >
                        > > use File::Copy;
                        > > File::Copy::copy($filename, 'junk.txt) or die "Failed to copy file -
                        > > $!";
                        > >
                        > > That may make it work; if not, the error message will be more helpful
                        > > to help you see why.
                        > >
                        > > --
                        > > David Precious ("bigpresh")
                        > > http://www.preshweb.co.uk/
                        > >
                        > > "Programming is like sex. One mistake and you have to support it for
                        > > the rest of your life". (Michael Sinz)
                        > >
                        > > [Non-text portions of this message have been removed]
                        > >
                        > > [Non-text portions of this message have been removed]
                        > >
                        > >
                        > >
                        > >
                        > > [Non-text portions of this message have been removed]
                        > >
                        >
                        >
                        >
                        >
                        > ------------------------------------
                        >
                        > Unsubscribing info is here: http://help.yahoo.com/help/us/groups/groups-32.htmlYahoo! Groups Links
                        >
                        >
                        >
                        >
                        > T. Rowe Price (including T. Rowe Price Group, Inc. and its affiliates) and its associates do not provide legal or tax advice. Any tax-related discussion contained in this e-mail, including any attachments, is not intended or written to be used, and cannot be used, for the purpose of (i) avoiding any tax penalties or (ii) promoting, marketing, or recommending to any other party any transaction or matter addressed herein. Please consult your independent legal counsel and/or professional tax advisor regarding any legal or tax issues raised in this e-mail.
                        >
                        > The contents of this e-mail and any attachments are intended solely for the use of the named addressee(s) and may contain confidential and/or privileged information. Any unauthorized use, copying, disclosure, or distribution of the contents of this e-mail is strictly prohibited by the sender and may be unlawful. If you are not the intended recipient, please notify the sender immediately and delete this e-mail.
                        >
                      • David Precious
                        ... Then do so in Perl, in a robust and portable way: my @files_sorted = sort { -M $a -M $b } glob /sds/ibr/waibrs/submit/SPD/00* ; That will give you the
                        Message 11 of 14 , Oct 31, 2011
                        View Source
                        • 0 Attachment
                          On Monday 31 October 2011 18:16:19 Regina Miller wrote:
                          > From: Randal L. Schwartz [mailto:merlyn@...]
                          > > Why are you using "ls" when Perl is perfectly good at globbing?
                          > >
                          > > my @names = glob "/sds/ibr/waibrs/submit/SPD/00*";
                          > >
                          > > And then figure out which name you want.

                          > Because I want the latest one, so I need them in order, not by name, but
                          > by datetime.

                          Then do so in Perl, in a robust and portable way:

                          my @files_sorted = sort { -M $a <=> -M $b }
                          glob "/sds/ibr/waibrs/submit/SPD/00*";

                          That will give you the matching files, sorted by modification time, oldest
                          first.

                          If you only want the first one, either then say $files_sorted[0] to get it, or
                          capture only the first one with:

                          my ($oldest_file) = sort { -M $a <=> -M $b }
                          glob "/sds/ibr/waibrs/submit/SPD/00*";
                        • David Precious
                          ... Yup, the newline from the `ls -at1` output was the reason behind the (fairly clear) error message you received when using File::Copy. Whilst you now have a
                          Message 12 of 14 , Oct 31, 2011
                          View Source
                          • 0 Attachment
                            On Monday 31 October 2011 18:23:03 rmillergraysharbor wrote:
                            > That was it!
                            > I didn't chomp!

                            Yup, the newline from the `ls -at1` output was the reason behind the (fairly
                            clear) error message you received when using File::Copy.

                            Whilst you now have a script doing what you want, for the sake of your future
                            code and those who come after you, I would urge you to consider executing
                            things like 'cp', 'ls' etc a Bad Thing, often leading to non-portable code
                            with potential security vulnerabilities - if you can avoid executing shell
                            commands and just do it in Perl, it'll usually be more secure and more
                            portable.

                            Otherwise, you may as well be writing a shell script :)
                          • rmillergraysharbor
                            Thank you for the advice. And thanks to David Precious for the sample code that is more Perl-specific. I appreciate it. Regina
                            Message 13 of 14 , Oct 31, 2011
                            View Source
                            • 0 Attachment
                              Thank you for the advice.
                              And thanks to David Precious for the sample code that is more Perl-specific.

                              I appreciate it.

                              Regina
                              --- In perl-beginner@yahoogroups.com, David Precious <davidp@...> wrote:
                              >
                              > On Monday 31 October 2011 18:23:03 rmillergraysharbor wrote:
                              > > That was it!
                              > > I didn't chomp!
                              >
                              > Yup, the newline from the `ls -at1` output was the reason behind the (fairly
                              > clear) error message you received when using File::Copy.
                              >
                              > Whilst you now have a script doing what you want, for the sake of your future
                              > code and those who come after you, I would urge you to consider executing
                              > things like 'cp', 'ls' etc a Bad Thing, often leading to non-portable code
                              > with potential security vulnerabilities - if you can avoid executing shell
                              > commands and just do it in Perl, it'll usually be more secure and more
                              > portable.
                              >
                              > Otherwise, you may as well be writing a shell script :)
                              >
                            Your message has been successfully submitted and would be delivered to recipients shortly.