---
name: "Perl::Critic::Policy::Subroutines::ProhibitReturnSort"
section: "3pm"
platform: "linux"
package: "perl-perl-critic"
version: "1.156-3"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/Perl::Critic::Policy::Subroutines::ProhibitReturnSort"
---

# Perl::Critic::Policy::Subroutines::ProhibitReturnSort(3pm)

Behavior of "sort" is not defined if called in scalar context.

## NAME

Perl::Critic::Policy::Subroutines::ProhibitReturnSort - Behavior of "sort" is not defined if called in scalar context.

## AFFILIATION

This Policy is part of the core Perl::Critic distribution.

## DESCRIPTION

The behavior of the builtin `"sort"` function is not defined if called in scalar context.  So if you write a subroutine that directly `"return"`s the result of a `"sort"` operation, then your code will behave unpredictably if someone calls your subroutine in a scalar context.  This Policy emits a violation if the `"return"` keyword is directly followed by the `"sort"` function.  To safely return a sorted list of values from a subroutine, you should assign the sorted values to a temporary variable first.  For example:

```
   sub frobulate {
       return sort @list;  # not ok!
       my @sorted_list = sort @list;
       return @sorted_list # OK
   }
```

## KNOWN BUGS

This Policy is not sensitive to the `"wantarray"` function.  So the following code would generate a false violation:

```
   sub frobulate {
       if (wantarray) {
           return sort @list;
       }
       else{
           return join @list;
       }
   }
```

## CONFIGURATION

This Policy is not configurable except for the standard options.

## CREDITS

This Policy was suggested by Ulrich Wisser and the \<http://iis.se\> team.

## AUTHOR

Jeffrey Ryan Thalhammer \<jeff@imaginative-software.com\>

## COPYRIGHT

Copyright (c) 2005-2017 Imaginative Software Systems.  All rights reserved.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.  The full text of this license can be found in the LICENSE file included with this module.
