KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
Perl 5.10 introduced a proper switch construct with given/when and it seems like a powerful tool. Currently however, perldoc perlsyn lacks some good examples. One case where I found it handy lately was for using it with file test operators: given (-d "foo/bar/") { when (1) { ... } # defined is wrong as -d returns '' on a file. default { ... } } or alternatively: given ("foo/bar/") { when (-d) { ... } default { ... } } For me, especially the first version looks better than an if-else construct or using the ternary operator, when depending on the outcome of the test I need to perform actions in both cases. It made me wonder though, what else looks neat beyond the simple case of falling back to smart matching and avoiding overlong if-elsif-elsif-...-else structures? I have a hunch that given/when makes it possible to be clever without losing clarity, but I don't have any good examples. One thing that surprised me though, is that you can nest the construct aswell: given ($filename) { when (-e) { when (-f) { when (-z) { say "Empty file" } default { say "Nonempty file" } } when (-d) { when (-o) { say "Directory owned by me"} default { say "Directory owned by someone else" } } default { say "Special" } } default { say "No such file or directory" } }
Tags (comma-separated)
Save Edits
Cancel