POSIX::1003::FS - POSIX for the file-system
POSIX::1003::FS is a POSIX::1003::Module
use POSIX::1003::FS ':access'; if(access $fn, R_OK) # $fn is readible? use POSIX::1003::FS qw(mkfifo :stat); mkfifo($path, S_IRUSR|S_IWUSR) or die $!; # Absorbed from Unix::Mknod use POSIX::1003::FS qw(mknod major minor makedev); use File::stat my $st = stat '/dev/null'; my $major = major $st->rdev; my $minor = minor $st->rdev; mknod '/tmp/special', S_IFCHR|0600, makedev($major,$minor+1);
You may also need POSIX::1003::Pathconf.
See documentation in the base class.
See "METHODS" in POSIX::1003::Module
Read man filetest before you start using this function! Use the *_OK constants for FLAGS.
man filetest
*_OK
Like chown(), but does not follow symlinks when encountered. Returns the number of files successfully changed.
chown()
Be Warned that the POSIX specification uses different parameter order. For Perl was decided to accept a list of filenames. Passing more than one filename, however, hinders correct error reporting.
# POSIX specification: # int lchown(const char *path, uid_t owner, gid_t group); # Perl core implementation: my $successes = chown($uid, $gid, @filenames); use POSIX; POSIX::lchown($uid, $gid, $filename) or die $!; use POSIX::1003::FS 'lchown'; my @successes = lchown($uid, $gid, @filenames);
Simple CORE::mkdir()
CORE::mkdir()
Create a special device node on PATH. Useful symbols for MODE can be collected from Fcntl (import tag :mode). The DEVICE number is a combination from the type (major number), a sequence number and usage information (combined in a minor number).
:mode
[0.93] Give a file or directory a new name, the basis of the UNIX mv ('move') command. This will use CORE::rename().
mv
CORE::rename()
Be warned that Window's rename implementation will fail when NEWNAME exists. That behavior is not POSIX compliant. On many platforms (especially the older), a rename between different partitions is not allowed.
rename
Simply CORE::utime()
CORE::utime()
Be Warned that POSIX.pm uses a different parameter order than CORE.
POSIX.pm
POSIX::utime($filename, $atime, $mtime); CORE::utime($atime, $mtime, @filenames);
example:
use File::stat 'stat'; if(S_ISDIR(stat($fn)->mode)) ... if(S_ISDIR((lstat $fn)[2])) ...
Combine MAJOR and MINOR into a single DEVICE number.
my $device = (stat $filename)[6]; my $device_type = major $device; my $sequence_nr = minor $device; my $device = makedev $major, $minor; mknod $specialfile, $mode, $device;
The following constants are exported, shown here with the values discovered during installation of this module:
F_OK 0 S_IFMT 61440 S_ISVTX 512 FILENAME_MAX 4096 S_IFREG 32768 S_IWGRP 16 MAX_CANON 255 S_IFSOCK 49152 S_IWOTH 2 NAME_MAX 255 S_IRGRP 32 S_IWUSR 128 PATH_MAX 4096 S_IROTH 4 S_IXGRP 8 R_OK 4 S_IRUSR 256 S_IXOTH 1 S_IFBLK 24576 S_IRWXG 56 S_IXUSR 64 S_IFCHR 8192 S_IRWXO 7 W_OK 2 S_IFDIR 16384 S_IRWXU 448 X_OK 1 S_IFIFO 4096 S_ISGID 1024 S_IFLNK 40960 S_ISUID 2048
All functions and constants which start with S_* can be imported using the :stat tag, including all related S_IS* functions.
S_*
:stat
S_IS*
The *_OK tags can be imported with :access
:access
Permission flags get loaded with :perms.
:perms
This module is part of POSIX-1003 distribution version 0.98, built on December 03, 2013. Website: http://perl.overmeer.net. The code is based on POSIX, which is released with Perl itself. See also POSIX::Util for additional functionality.
Copyrights 2011-2013 on the perl code and the related documentation by [Mark Overmeer]. For other contributors see ChangeLog.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See http://www.perl.com/perl/misc/Artistic.html
To install POSIX::1003, copy and paste the appropriate command in to your terminal.
cpanm
cpanm POSIX::1003
CPAN shell
perl -MCPAN -e shell install POSIX::1003
For more information on module installation, please visit the detailed CPAN module installation guide.