> ------------------------------------------------ > On Thu, 10 Jul 2003 21:56:17 +0100, "Rob Dixon" > <[EMAIL PROTECTED]> wrote: > > > [EMAIL PROTECTED] wrote: > > > ----- Original Message ----- > > > From: Rob Dixon <[EMAIL PROTECTED]> > > > Date: Thursday, July 10, 2003 11:36 am > > > Subject: Re: Net::FTP > > > > > > > Dan Muey wrote: > > > > > > > What I'd like to do is simply: > > > > > > > (WHERE exists() is hopefully a solution to my first > > > > > > > question) > > > > > > > > > > > > > > if($ftp->exists($file)) { > > > > > > > $ftp->delete($file); > > > > > > > if($ftp->exists($file)) { print "Could not delete > $file"; } > > > > > > > else { print "$file is all gone"; } } else { > print "$file > > > > > > > does > > > > > > not exist so > > > > > > > I did not even try to delete it" } > > > > > > > > > > > > 'size' is the way to do it, but remember that it > will return > > > > > > zero for a file of zero size. What you need is 'defined'. > > > > > > > > > > > > This little subroutine will fulfil your wishes and make the > > > > > > code above work. > > > > > > > > > > > > sub Net::FTP::exists { > > > > > > my $ftp = shift; > > > > > > defined $ftp->size(@_); > > > > > > } > > > > > > > > > > > > HTH, > > > > > > > > > > As always Rob a huge help. I'll play around with that. It's > > > > > makes so much sense when you think about it! I'll > tuck that one > > > > > away under my big hat too! > > > > > > > > > > > > > Glad to help. FTP's a pain: as far as I know there's no way of > > > > telling whether a filename is a plain file or a > directory either, > > > > without either trying to 'cwd' to it or parsing the output or > > > > 'dir'. > > > you probebly can tell if its a directory. just grab the > first 1024 > > > bytes, and look inside it. Will be eassy if its laying on > top of UFS > > > or FFS > > > > That depends on your file system. I don't think > > most would let you open a directory as a plain file. > > > > What I'm pining for is something like > > > > $ftp->stat('entity'); > > > > Dan will tell us when he's written it :) > > > > Which was going to be my question when Dan started talking > about it, I think it would be cool to have, but what is being > talked about being implemented is really outside of the > Net::FTP scope since a) it isn't part of the FTP RFC, and 2) > the reason it isn't is probably because of the wide range of > FTP implementations.
Hmm, could be but my stuff is just some routines that use Net::FTP functions. What if the name reflected that issue, like Net::FTP::FileTest or something. That way if they don't have a file system then it wouldn't make much sense to use FileTest But if they do then it might be perfect for them. I don't know I'll have to look into it more. Thanks for the info. Dan > > The phrase "That depends on the file system" depends on there > being a file system to begin with, which is really my point, > what about FTP servers on systems without the notions of > directories, or even files, aka they deal with data sets and > are line rather than file based. All of a sudden you need > some way of marking the system type in the FTP connection > object such that calling a 'stat' on a data set doesn't tell > you the wrong information (or worse throws an exception, > though they can be caught so maybe that is the best solution) > for a system that isn't file based, etc. but to the best of > my knowledge there is no way to deduce that from the FTP > server's responses (at least not a standard way). > > I am certainly not an expert on those types of systems so > that doesn't mean there isn't a way, but I know it is easy to > get caught up in the file system notion because most widely > used OS'es depend on one (I myself am young enough to have > already had this happen) that building on top of something > that is not RFC compliant can lead to issues. > > Any of the older gurus in the crowd that have dealt with line > based FTP servers wish to comment? > http://danconia.org -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]