Hi,

Let me thank you for your help. I think you guys are doing a great work, its
really appreciative.
Thanks to David and John. Now that I changed my *"perl"* code to the
following, its actually working!!!!

*use strict;
use warnings;
use File::stat;

opendir (DH, "subcode") or die "$!";
chdir("C:/Documents and Settings/Myself/Desktop/code/subcode");

foreach my $file(readdir DH)
{
my $value=stat($file);
my $perm=$value->mode & 07777;
printf "\n$file\t%04o\n", $perm;
}

closedir (DH);*


Leading to a question, why did we 'AND' *mode* to *07777*. What does each
bit stand for and why there  are 5 bits as compared to UNIX's
User-Group-Others bits. So actually 3 questions :)

Thank you.
-- 
Gunwant Singh


History:
-----------

Hi,

I am new to this mailing list and I am very new to PERL. So, please bear
with me for my questions.
I wrote a code that lists files in a directory with the permissions. I am
coding for MS-Windows.
Here is my code:

1 use strict;
2 use warnings;
3 use File::stat();
4
5 opendir (DH, "subcode") or die "$!";
6 foreach my $file(readdir DH)
7 {
8 my $perm=stat($file)->mode;
9 print "$file\t$perm\n";
10 }
11 closedir (DH);

I am getting the listing of file just fine if I dont add line 8. But as soon
as I try to display the permissions, I get this:

Can't call method "mode" without a package or object reference at
C:\Documents a
nd Settings\Myself\Desktop\code\dir-op.pl line 8.

What am I doing wrong!

Thanks.

-- 
Gunwant Singh
-------------------------------------------------------------------------------------------

> -----Original Message-----
> From: Gunwant Singh [mailto:[EMAIL PROTECTED]
> Sent: Wednesday, June 04, 2008 10:02
> To: beginners@perl.org
> Subject: Reg. Directory listing program
>
> Hi,
>
> I am new to this mailing list and I am very new to PERL. So,
> please bear
> with me for my questions.
> I wrote a code that lists files in a directory with the
> permissions. I am
> coding for MS-Windows.
> Here is my code:
>
> *1 use strict;
> 2 use warnings;
> 3 use File::stat();
> 4
> 5 opendir (DH, "subcode") or die "$!";
> 6 foreach my $file(readdir DH)
> 7 {
> 8 my $perm=stat($file)->mode;

       you need something like:
   my $filestat = stat($file);
   my $perm=$filestat->mode;
 but this will not work correctly unless you are already positioned on
the right directory location. So either you can do a chdir to the folder
you are doing or a concatenate of "subcode" . $file to get the file
status correctly.

Wags ;)

> 9 print "$file\t$perm\n";
> 10 }
> 11 closedir (DH);
>
> *I am getting the listing of file just fine if I dont add
> line 8. But as
> soon as I try to display the permissions, I get this:
>
> *Can't call method "mode" without a package or object reference at
> C:\Documents a
> nd Settings\Myself\Desktop\code\dir-op.pl line 8.
>
> *What am I doing wrong!
>
> Thanks.
>
> --
> Gunwant Singh
-----------------------------------------------------------------------------------------------

> -----Original Message-----
> From: Wagner, David --- Senior Programmer Analyst --- WGO
> [mailto:[EMAIL PROTECTED]
> Sent: Wednesday, June 04, 2008 11:08
> To: Gunwant Singh; beginners@perl.org
> Subject: RE: Reg. Directory listing program
>
> > -----Original Message-----
> > From: Gunwant Singh [mailto:[EMAIL PROTECTED]
> > Sent: Wednesday, June 04, 2008 10:02
> > To: beginners@perl.org
> > Subject: Reg. Directory listing program
> >
> > Hi,
> >
> > I am new to this mailing list and I am very new to PERL. So,
> > please bear
> > with me for my questions.
> > I wrote a code that lists files in a directory with the
> > permissions. I am
> > coding for MS-Windows.
> > Here is my code:
> >
> > *1 use strict;
> > 2 use warnings;
> > 3 use File::stat();
> > 4
> > 5 opendir (DH, "subcode") or die "$!";
> > 6 foreach my $file(readdir DH)
> > 7 {
> > 8 my $perm=stat($file)->mode;
>
>       you need something like:
>     my $filestat = stat($file);
>     my $perm=$filestat->mode;
       I was looking at Programming Perl and if you want to make sense
of the mode, then should 'and' with 07777 and print out using %04o (
octal output ), so something like:
       my $perm=$filestat->mode & 07777;

>  but this will not work correctly unless you are already positioned on
> the right directory location. So either you can do a chdir to
> the folder
> you are doing or a concatenate of "subcode" . $file to get the file
> status correctly.
>
> Wags ;)
>
> > 9 print "$file\t$perm\n";

       Then change print to
       printf "$file %04o\n", $perm;

Wags ;)

> > 10 }
> > 11 closedir (DH);
> >
> > *I am getting the listing of file just fine if I dont add
> > line 8. But as
> > soon as I try to display the permissions, I get this:
> >
> > *Can't call method "mode" without a package or object reference at
> > C:\Documents a
> > nd Settings\Myself\Desktop\code\dir-op.pl line 8.
> >
> > *What am I doing wrong!
> >
> > Thanks.
> >
> > --
> > Gunwant Singh
> >
>
> **********************************************************************
> This message contains information that is confidential and
> proprietary to FedEx Freight or its affiliates.  It is
> intended only for the recipient named and for the express
> purpose(s) described therein.  Any other use is prohibited.
> **********************************************************************
>
>
> --
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> http://learn.perl.org/
>
>
>
Reply

Reply to all

Forward


John W. Krahn
Gunwant Singh wrote: > > Hi, Hello, perldoc -q "What.s the difference
between...

Jun 5 (2 days ago)
John W. KrahnLoading...
Jun 5 (2 days ago)
John W. Krahn to Perl

show details Jun 5 (2 days ago)


Reply


Gunwant Singh wrote:

    Hi,


Hello,


    I am new to this mailing list and I am very new to PERL.


perldoc -q "What.s the difference between .perl. and .Perl.?"



    So, please bear with me for my questions.
    I wrote a code that lists files in a directory with the permissions. I
am
    coding for MS-Windows.
    Here is my code:

    *1 use strict;
    2 use warnings;
    3 use File::stat();


perldoc -f use
[snip]
   use Module LIST
[snip]
           If you do not want to call the package's "import" method
           (for instance, to stop your namespace from being altered),
           explicitly supply the empty list:

                  use Module ();

So you are using the module File::stat but you are not importing any of its
methods.

perldoc File::stat
[snip]
DESCRIPTION
      This module's default exports override the core stat() and
      lstat() functions, replacing them with versions that return
      "File::stat" objects.



    4
    5 opendir (DH, "subcode") or die "$!";
    6 foreach my $file(readdir DH)
    7 {
    8 my $perm=stat($file)->mode;


Here you are calling the method "mode" but it is not available because
stat() is the Perl built-in function and not the overridden object that
File::stat provides.  Also you are trying to stat() $file in the current
directory and not in the "subcode" directory where it is actually located.



    9 print "$file\t$perm\n";
    10 }
    11 closedir (DH);

    *I am getting the listing of file just fine if I dont add line 8. But as
    soon as I try to display the permissions, I get this:

    *Can't call method "mode" without a package or object reference at
    C:\Documents a
    nd Settings\Myself\Desktop\code\dir-op.pl line 8.

    *What am I doing wrong!



John
-- 
Perl isn't a toolbox, but a small machine shop where you
can special-order certain sorts of tools at low cost and
in short order.                            -- Larry Wall
- Show quoted text -



-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/


Reply

Reply to all

Forward


John W. Krahn
> > >>> >>> From: Gunwant Singh [mailto:[EMAIL PROTECTED] Better to do it
...

Jun 5 (1 day ago)
John W. KrahnLoading...
Jun 5 (1 day ago)
John W. Krahn to Perl

show details Jun 5 (1 day ago)


Reply


Wagner, David --- Senior Programmer Analyst --- WGO wrote:


        From: Wagner, David --- Senior Programmer Analyst --- WGO

            From: Gunwant Singh [mailto:[EMAIL PROTECTED]
            9 print "$file\t$perm\n";


           Then change print to
           printf "$file %04o\n", $perm;


Better to do it this way:

       printf "%s %04o\n", $file, $perm;



John
-- 
Perl isn't a toolbox, but a small machine shop where you
can special-order certain sorts of tools at low cost and
in short order.                            -- Larry Wall

-- 
- Show quoted text -
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/


Reply

Reply to all

Forward


Gunwant Singh to gunwant.singh

show details 12:23 AM (22 hours ago)


Reply




---------- Forwarded message ----------
From: Wagner, David --- Senior Programmer Analyst --- WGO <
[EMAIL PROTECTED]>
Date: Wed, Jun 4, 2008 at 11:37 PM
Subject: RE: Reg. Directory listing program
- Show quoted text -
To: Gunwant Singh <[EMAIL PROTECTED]>, beginners@perl.org


> -----Original Message-----
> From: Gunwant Singh [mailto:[EMAIL PROTECTED]
> Sent: Wednesday, June 04, 2008 10:02
> To: beginners@perl.org
> Subject: Reg. Directory listing program
>
> Hi,
>
> I am new to this mailing list and I am very new to PERL. So,
> please bear
> with me for my questions.
> I wrote a code that lists files in a directory with the
> permissions. I am
> coding for MS-Windows.
> Here is my code:
>
> *1 use strict;
> 2 use warnings;
> 3 use File::stat();
> 4
> 5 opendir (DH, "subcode") or die "$!";
> 6 foreach my $file(readdir DH)
> 7 {
> 8 my $perm=stat($file)->mode;

       you need something like:
   my $filestat = stat($file);
   my $perm=$filestat->mode;
 but this will not work correctly unless you are already positioned on
the right directory location. So either you can do a chdir to the folder
you are doing or a concatenate of "subcode" . $file to get the file
status correctly.

Wags ;)

> 9 print "$file\t$perm\n";
> 10 }
> 11 closedir (DH);
>
> *I am getting the listing of file just fine if I dont add
> line 8. But as
> soon as I try to display the permissions, I get this:
>
> *Can't call method "mode" without a package or object reference at
> C:\Documents a
> nd Settings\Myself\Desktop\code\dir-op.pl line 8.
>
> *What am I doing wrong!
>
> Thanks.
>
> --
> Gunwant Singh
>

Reply via email to