Re: File test operators as Pairs Luke Palmer wrote: > These things are methods, and I'm not sure why we've crammed them into > smart match. Things like :M have nothing to do with matching. What > would it mean if smart match returned false?  "This file has not been > modified ever"?  :e has a bit more merit for a smart match, but the > operation has little to do with the concept of a string or the pair e > => 1. Also, I found the following line from S03 to be jolting:     Any       Pair      test object             .STATUS(X) (Str,IO do filetest) It struck me as a rather specific application for such a generic data type. > I'm inclined to say that the best solution for filetests is to throw > out our dwimmery altogether.  Back in Perl 4 days, using "stat" > explicitly was awkward, because you had to use it as a list and > memorize the positions of all the returns.  -s $file beats the heck > out of (stat $file)[7], for sure.  It also had the benefit that shell > people would instantly recognize what's going on. > > However, now we have stat($file).size.  With that, every programmer > will recognize what's going on, not just people with shell background. >  And I don't think even people with a shell background will know what > ($file ~~ :s) means (their guess could be right, but they'd have to > look it up to confirm, and they would never think to *write* such a > thing). > > I can never remember whether mtime is -m or -M anyway... > > Let's get rid of all the filetest magic, in favor of using stat explicitly. I tend to agree that the magic should go away.  However, I already miss the filetest operators.  Given the way that prefix operators work, wasn't it already possible to say something like the following?     given $handle {         when .'-r' & .'-w' & .'-x' { ... }         when !.'-w' | !.'-x' { ... }         when * { ... }     }     sort { $^a.'-M' <=> $^b.'-M' }, @files     sort { .'-M' }, @files What does pair notation buy us that quoted-postfix notation doesn't already cover? --  Jonathan "Dataweaver" Lang