This service will be undergoing maintenance at 00:00 UTC, 2017-10-23 It is expected to last about 30 minutes
Bug 453208 - perl -e file test misses broken symlinks
perl -e file test misses broken symlinks
Status: CLOSED NOTABUG
Product: Red Hat Enterprise Linux 4
Classification: Red Hat
Component: perl (Show other bugs)
4.0
i386 Linux
low Severity low
: rc
: ---
Assigned To: Marcela Mašláňová
desktop-bugs@redhat.com
:
Depends On:
Blocks:
  Show dependency treegraph
 
Reported: 2008-06-27 15:52 EDT by Steve
Modified: 2008-08-14 08:57 EDT (History)
0 users

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Environment:
Last Closed: 2008-08-14 08:57:23 EDT
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---


Attachments (Terms of Use)

  None (edit)
Description Steve 2008-06-27 15:52:17 EDT
Description of problem:


Version-Release number of selected component (if applicable):
perl-5.8.5-16.RHEL4

How reproducible:
100%

Steps to Reproduce:
1. create a directory (mkdir /tmp/test1)
2. make a symlink to it (ln -s /tmp/test1 /tmp/linktest1)
3. move or delete the directory (mv /tmp/test1 /tmp/test1moved)
4. now the link is broken, so try running this script:

my $filename = "/tmp/linktest1";
my $directory = "/tmp";

chomp($filename);
if( -e $filename)
{
    `/bin/rm -f $filename`;
}

chomp($directory);
if( -d $directory)
{
    `/bin/ln -s /tmp/test1moved $filename`;
}



Actual results:
The script gives this for output:

/bin/ln: `/tmp/linktest1': File exists

Basically, it does not enter the first if statement, and the broken link is 
not deleted.  However, if you replace the "-e" test with the "-l" test, the 
broken link is deleted.  

Expected results:

I would expect that the -e flag with see the broken link as a file, which 
would then cause it to be deleted.  Note that the above test program does work 
fine if the link is not broken.  

Additional info:  Obviously, I don't really need the rm command inside of the 
if statement, because it doesn't really matter if the file exists or not.  
However, I noticed that the -e flag didn't work as I expected it to, and I 
thought someone else might run into it unexpectedly on something more 
important.  Let me know if you need more info.
Comment 1 Marcela Mašláňová 2008-08-14 08:57:23 EDT
This must be a conventional behaviour. If you try the same with bash, it ends the same way.

Note You need to log in before you can comment on or make changes to this bug.