Perl File and Directory Access - PowerPoint PPT Presentation

About This Presentation
Title:

Perl File and Directory Access

Description:

Software Tools Perl File and Directory Access – PowerPoint PPT presentation

Number of Views:123
Avg rating:3.0/5.0
Slides: 20
Provided by: Andrew1834
Category:

less

Transcript and Presenter's Notes

Title: Perl File and Directory Access


1
Software Tools
  • Perl File and Directory Access

2
Changing Directories
  • You can change the current working directory
    within Perl, just like the cd shell command.
  • In Perl, the chdir function, takes a single
    argument -- the directory name to change to.
  • chdir returns true if youve successfully changed
    to the requested directory, and false if you
    could not.
  • chdir("/etc") die "cannot cd to /etc"

3
Changing Directories
  • Like other functions, parentheses are optional
  • cat cd1
  • !/usr/local/bin/perl5 -w
  • print "where to go? "
  • chomp(where ltSTDINgt)
  • if(chdir where)
  • print "chdir succeeded, now in where\n"
  • else
  • print "chdir did not succeeded\n"
  • cd1
  • where to go? /bin
  • chdir succeeded, now in /bin

4
Changing Directories
  • When your Perl program starts, the current
    working directory will be inherited from the
    shell that invoked it.
  • However, using chdir in Perl will not change the
    working directory of the shell when your program
    ends.
  • The chdir function without a parameter defaults
    to taking you to your home directory.

5
Globbing
  • The shell takes a and turns it into a list of
    all the filenames in the current directory.
  • Similarly, a-m.cpp turns into a list of all
    filenames in the current directory that begin
    with a letter in the first half of the alphabet,
    and end in .cpp.
  • The expansion of or /etc/host into the list of
    matching filenames is called globbing.

6
Globbing
  • Perl supports globbing.
  • Just put the globbing pattern between angle
    brackets or use the glob function
  • _at_all ltgt
  • _at_b lta-m.cppgt
  • _at_c glob("a-m.cpp") same as _at_b
  • In a list context, the glob returns a list of all
    names that match the pattern (or an empty list if
    none match).

7
Globbing
  • Example
  • ls
  • address letter1 names sort
  • cat glob1
  • !/usr/local/bin/perl5 -w
  • _at_files lta-mgt
  • foreach file (_at_files)
  • print "file\n"
  • glob1
  • address
  • letter1

8
Globbing
  • If you use a full pathname in your glob, you will
    get full pathnames as a result
  • cat glob2
  • !/usr/local/bin/perl5 -w
  • _at_files lt/etc/hostgt
  • foreach file (_at_files)
  • print "file "
  • print "\n"
  • glob2
  • /etc/hostname.le0 /etc/hosts /etc/hosts.allow
    /etc/hosts.deny

9
Globbing
  • If you want just the simple filename, you can use
    substitute to chop off the directory part of the
    string
  • cat glob3
  • !/usr/local/bin/perl5 -w
  • _at_files lt/etc/hostgt
  • foreach file (_at_files)
  • file s./ delete to last slash
  • print "file "
  • print "\n"
  • glob3
  • hostname.le0 hosts hosts.allow hosts.deny

10
Globbing
  • Multiple patterns are permitted inside the glob
  • _at_bill_files ltgates clintongt
  • The argument to glob is variable interpolated
  • cat glob4
  • !/usr/local/bin/perl5 -w
  • if(-d "/homes/horner/111")
  • where "/homes/horner/111"
  • else
  • where "/homes/horner"
  • _at_files ltwhere/gt
  • print "_at_files\n"
  • glob4
  • /homes/horner/111/letter1 /homes/horner/111/name
    s

11
Removing a File
  • The Perl unlink function deletes a file, exactly
    like the UNIX rm command.
  • unlink("bill") bye bye bill
  • Example
  • ls
  • letter1 names unlink1
  • cat unlink1
  • !/usr/local/bin/perl5 -w
  • print "what file to delete? "
  • chomp(what ltSTDINgt)
  • unlink(what)
  • unlink1
  • what file to delete? letter1
  • ls
  • names unlink1

12
Removing a File
  • unlink can take a list of names as well
  • unlink("bill", "gates")
  • unlink lt.cppgt delete all .cpp files
  • The return value on unlink is the number of files
    successfully deleted.
  • foreach file (lt.cppgt)
  • if(unlink(file) 0)
  • print "trouble deleting file\n"

13
Removing a File
  • With no arguments to unlink, _ is used as the
    default.
  • foreach (lt.cppgt)
  • if(unlink 0)
  • print "trouble deleting _\n"

14
Renaming a File
  • The Perl function rename allows you to rename
    files.
  • Here is how to rename the file gates into cheap
  • rename("gates", "cheap")
  • rename returns a true value if successful.
  • if(rename("gates", "cheap"))
  • print "Bill is now cheap\n"
  • else
  • print "Bill is still gates\n"

15
Hard Links
  • The Perl function link allows you to create a
    hard link.
  • Here is how to link from the file gates to cheap
  • link("gates", "cheap")
  • link returns true if successful.
  • if(link("gates", "cheap"))
  • print "Bill is now also cheap\n"
  • else
  • print "Bill is still only gates\n"

16
Soft Links
  • The Perl function symlink allows you to create a
    soft (symbolic) link.
  • Here is how to symbolic link from gates to cheap
  • symlink("gates", "cheap")
  • readlink returns the name pointed at by the
    specified symbolic link
  • symlink("gates", "cheap")
  • x readlink("cheap")
  • print "cheap points at x\n" cheap points at
    gates

17
Making and Removing Directories
  • The Perl functions mkdir and rmdir allow you to
    make and remove directories.
  • mkdir takes the name of the new directory and a
    mode that determines the permissions
  • Use 0755 for the mode to allow user full (rwx)
    permission, and no write permission for group and
    other (rx only).
  • mkdir("gatesdir", 0755)
  • rmdir("gatesdir")

18
Permissions
  • The leading mode number is always 0, and the
    other 3 numbers are permissions for user, group,
    and other respectively.
  • The mode values are octal, and have the following
    meanings
  • 0 ---
  • 1 --x
  • 2 -w-
  • 3 -wx
  • 4 r--
  • 5 r-x
  • 6 rw-
  • 7 rwx

19
Modifying Permissions
  • The Perl function chmod allows you to change file
    and directory permissions
  • mkdir("gatesdir", 0755) urwx grx orx
  • chmod(0750, "gatesdir") urwx grx o
    chmod(0531, "gates") urx gwx ox
  • chmod(0642 , "gates", "cheap") urw gr ow
Write a Comment
User Comments (0)
About PowerShow.com