{"id":"https:\/\/perlbrew.pl\/","title":"perlbrew","link":{"@attributes":{"rel":"alternate","href":"https:\/\/perlbrew.pl","type":"text\/html"}},"entry":[{"id":"https:\/\/perlbrew.pl\/Release-1.02.html?7a9ead407208b75b687914b932189c0c53e11292","link":{"@attributes":{"rel":"alternate","href":"https:\/\/perlbrew.pl\/Release-1.02.html","type":"text\/html"}},"title":"Perlbrew Release 1.02","published":"2025-07-18T21:35:49+09:00","author":{"name":"gugod"},"content":{"@attributes":{"type":"xhtml"},"div":{"p":"perlbrew 1.02 was released at 2025-07-18T21:08:37+0900 with these  changes:\n","ul":{"li":["Thanks to our contributors: Andrii Nugged, Marius Feraru\n",{"code":["uninstall","rm","delete"]},{"code":"patchperl"},"bashrc now works better with  (\"use strict\" in bash) is in place. PR #850.\n"]}}}},{"id":"https:\/\/perlbrew.pl\/Release-Notes.html?7f4576c1874571a2593db7230ededa33334b61f5","link":{"@attributes":{"rel":"alternate","href":"https:\/\/perlbrew.pl\/Release-Notes.html","type":"text\/html"}},"title":"Release Notes","published":"2024-11-27T20:24:21+09:00","author":{"name":"gugod"},"content":{"@attributes":{"type":"xhtml"},"div":{"ul":{"li":[{"a":"Release 1.01"},{"a":"Release 1.00"},{"a":"Release 0.99"},{"a":"Release 0.98"},{"a":"Release 0.97"},{"a":"Release 0.96"},{"a":"Release 0.95"},{"a":"Release 0.94"},{"a":"Release 0.93"},{"a":"Release 0.92"},{"a":"Release 0.91"},{"a":"Release 0.90"},{"a":"Release 0.89"},{"a":"Release 0.88"},{"a":"Release 0.87"},{"a":"Release 0.86"},{"a":"Release 0.85"},{"a":"Release 0.84"},{"a":"Release 0.83"},{"a":"Release 0.82"},{"a":"Release 0.81"},{"a":"Release 0.79"},{"a":"Release 0.78"},{"a":"Release 0.77"},{"a":"Release 0.76"},{"a":"Release 0.75"},{"a":"Release 0.74"},{"a":"Release 0.73"},{"a":"Release 0.72"},{"a":"Release 0.71"},{"a":"Release 0.70"},{"a":"Release 0.69"},{"a":"Release 0.68"},{"a":"Release 0.67"},{"a":"Release 0.66"},{"a":"Release 0.65"},{"a":"Release 0.64"},{"a":"Release 0.63"},{"a":"Release 0.62"},{"a":"Release 0.61"},{"a":"Release 0.59"},{"a":"Release 0.58"},{"a":"Release 0.57"},{"a":"Release 0.56"},{"a":"Release 0.55"},{"a":"Release 0.54"},{"a":"Release 0.53"},{"a":"Release 0.52"},{"a":"Release 0.51"},{"a":"Release 0.50"},{"a":"Release 0.49"},{"a":"Release 0.48"},{"a":"Release 0.47"},{"a":"Release 0.46"},{"a":"Release 0.45"},{"a":"Release 0.44"},{"a":"Release 0.43"},{"a":"Release 0.42"},{"a":"Release 0.41"},{"a":"Release 0.40"},{"a":"Release 0.39"},{"a":"Release 0.38"},{"a":"Release 0.37"},{"a":"Release 0.36"},{"a":"Release 0.35"},{"a":"Release 0.34"},{"a":"Release 0.33"},{"a":"Release 0.32"},{"a":"Release 0.31"},{"a":"Release 0.30"},{"a":"Release 0.29"},{"a":"Release 0.28"},{"a":"Release 0.27"},{"a":"Release 0.26"},{"a":"Release 0.25"},{"a":"Release 0.24"},{"a":"Release 0.23"},{"a":"Release 0.22"},{"a":"Release 0.21"},{"a":"Release 0.20"}]}}}},{"id":"https:\/\/perlbrew.pl\/Release-1.01.html?acd4a2d86b45cfe1b6e12c0fb9bf83a5bab80e1f","link":{"@attributes":{"rel":"alternate","href":"https:\/\/perlbrew.pl\/Release-1.01.html","type":"text\/html"}},"title":"Perlbrew Release 1.01","published":"2024-11-18T20:52:00+09:00","author":{"name":"gugod"},"content":{"@attributes":{"type":"xhtml"},"div":{"p":"perlbrew 1.01 was released at 2024-11-18T20:46:04+0900 with these  changes:\n","ul":{"li":"fix:  on macOS.\n"}}}},{"id":"https:\/\/perlbrew.pl\/perlbrew-install-skaji-relocatable-perl.html?7e38a446cd8488f357a708d5912e4f18138487cf","link":{"@attributes":{"rel":"alternate","href":"https:\/\/perlbrew.pl\/perlbrew-install-skaji-relocatable-perl.html","type":"text\/html"}},"title":"Perlbrew install skaji-relocatable-perl","published":"2024-10-04T11:52:08+09:00","author":{"name":"gugod"},"content":{"@attributes":{"type":"xhtml"},"div":{"p":[{"a":["skaji\/relocatable-perl","Shoichi Kaji","cpm"]},"Since , we could conveniently install skaji-relocatable-perl by doing:\n","When the prefix \"skaji-relocatable-perl-\" is detected, the installation process would be routed to download the binary build for current OS and arch, instead of building from source code.\n","Notice that it has a longer version number that p5p perl, because some minor changes it sometimes required for rebuilding the binaries.\n","The list of exact version numbers can be found on this page:\n","L\n","Usually a \".0\" suffix would suffice, sometimes there is a \".1\" or even \".2\" release, but not very often.\n","The skaji-relocatable-perl releases are build entirely on GitHub infra. It's built with the  option enabled by default, hence the name.\n","For perlbrew to install any binary releases, the  must be enabled, to basicaly support installation in your  folder -- a folder name that is unique to for each user and cannot be known in advance.\n",{"a":["skaji\/relocatable-perl","Perlbrew 1.00"]}],"pre":{"code":"perlbrew install skaji-relocatable-perl-5.40.0.0"}}}},{"id":"https:\/\/perlbrew.pl\/Perlbrew-1.00.html?f2c076df16dd7bc63638e54e98cce89702caa287","link":{"@attributes":{"rel":"alternate","href":"https:\/\/perlbrew.pl\/Perlbrew-1.00.html","type":"text\/html"}},"title":"Perlbrew 1.00","published":"2024-10-04T11:13:40+09:00","author":{"name":"gugod"},"content":{"@attributes":{"type":"xhtml"},"div":{"p":["perlbrew 1.00 was released on 2024\/10\/4, a day when I () was\nin a personal trip to the city of Hakodate, right before the awesome\nconference of , in which I gave a short\npresentation titled \"perlbrew 3000!\" -- it's a brief history of\nperlbrew, when we look back from year 3000.\n","While I'm generally just inchworming my way forward on various hobby\nprojects, it is also sometimes needed to temporarily become a\nfuturist, leaping forward in time in great steps, then look\nbackward. It's indeed easier that way, as ,\nsince, well, it's all in the history book now.\n","Very often, the version number 1.0 means something special, but to put\nin to the history of perlbrew, it is merely a version that comes after\n0.99, and the 91st relesae since version 0.10 -- the very the\nbeginning of perlbrew. Thanks to the internet and the participant of\nOSDC.tw -- we could still look backward in time, and found .\n","With or without any specialtiy in the social status of version\nnumbers, whole-number versions does sits in the position of being\nmilestones, and generally means something major, with enough maturity,\nor something that might be breaking with past versions. That would be\nenough reasons for me to aggregate my thoughts together and making up\na much longer release notes for perlbrew 1.00.\n","Oh yes, it's , not . Not just because two 0s are better\none, but because conventionally I've been using 2 digits in the 2nd\npart of version numbers, and I intend to keep it as a convention of\nthe perlbrew project. So the next major milestone would be , but\nnot .\n","Someone might argue about why having such subtle differences since,\n vs , they don't meaning different things: it's the same\npoint in the multi-dimensional plane of version numbers and they are\nboth parsed as the same version object by most of\nversion-number-parsing libraries (I hope.)\n","Suffice to say, that it's the job the author, to give arbitrary\nmeanings to the version numbers of their software, and if you ask me,\nI'd say it's non-sense to use even numbers to mean stability and odd\nnumbers to meaning instability. Prime numbers should be used to mean\nsomething stable, since they are not breakable. I may eventually\nengage with that rule.\n","Anyhow, perlbrew 1.00 is out and we are now on the path to perlbrew\n3000. I wholeheartly thank to the 148 contributors who've spent their\nvaluable time and provides commits for the perlbrew project.\n","To get to perlbrew 3000, I extrapolate that, we will probably require\nabout 1000 more contributors. Developers, you know what to do.\n","But for now, happy perlbrew-ing. \ud83c\udf7a\n","Written before YAPC::Hakodate.\n2024\/10\/4, .\n"]}}},{"id":"https:\/\/perlbrew.pl\/Release-1.00.html?ab179fff4919c55b0c3b28aa95b25dd3c8c0fdbe","link":{"@attributes":{"rel":"alternate","href":"https:\/\/perlbrew.pl\/Release-1.00.html","type":"text\/html"}},"title":"Perlbrew Release 1.00","published":"2024-10-04T11:03:40+09:00","author":{"name":"gugod"},"content":{"@attributes":{"type":"xhtml"},"div":{"p":["perlbrew 1.00 was released at 2024-10-04T10:48:40+0900 with these  changes:\n","See also: \n"],"ul":{"li":"Experimental:  now accept names like skaji-relocatable-perl-$version.\n"}}}},{"id":"https:\/\/perlbrew.pl\/Release-0.99.html?fcfbfb5be9967252d97458d6ab7acbc961f61b54","link":{"@attributes":{"rel":"alternate","href":"https:\/\/perlbrew.pl\/Release-0.99.html","type":"text\/html"}},"title":"Perlbrew Release 0.99","published":"2024-09-07T16:37:45+09:00","author":{"name":"gugod"},"content":{"@attributes":{"type":"xhtml"},"div":{"p":"perlbrew 0.99 was released at 2024-09-07T16:30:28+0900 with these  changes:\n","ul":{"li":["Thanks to our contributors: Graham Knop, Joelle Maslak, Luke Closs, jonasbn\n","bashrc executes properly in bash shells with +h option set\n","Allow specification of non-standard Perl location\n","make-pp now requires the input to be specified with  or .\n","Tests are ported to Test2. Big thanks to Luke Closs.\n","Command make-pp now expects the input to be the path of an existing executable perl program, and would not be searching through $PATH.\n"]}}}},{"id":"https:\/\/perlbrew.pl\/Install-a-sitecustomize.pl-file-with-perlbrew.html?cf34bcbc9553fb22f7cec71da6b5a4c59fdeea63","link":{"@attributes":{"rel":"alternate","href":"https:\/\/perlbrew.pl\/Install-a-sitecustomize.pl-file-with-perlbrew.html","type":"text\/html"}},"title":"Install a sitecustomize.pl file with perlbrew","published":"2024-02-08T06:56:33+09:00","author":{"name":"gugod"},"content":{"@attributes":{"type":"xhtml"},"div":{"p":["by \n","When perl is compiled with  it will look for a file in the  directory called  and execute it extremely early in the life of the interpreter.  (See  and the  switch for an explanation.)\n","Perlbrew 0.37 adds the  installation option to specify a Perl file to be installed as . (Perlbrew will also set  automatically.)\n","This is extremely useful for doing dynamic manipulation of the environment or perl globals.  In particular, it can be used to modify @INC in a more customized way than can be achieved with .\n","Consider this usage example: A user wants to be able to install a command line perl application like App::Ack and have it be available regardless of which perl is active with Perlbrew.  Further, the user would like to keep its dependencies isolated so that the Perlbrew-installed perl stays 'pure'.\n","A good way to install an isolated application is to use  with Perlbrew:\n","This installs the 'ack' program to the  directory of the configured local library directory.  If the user switches to another Perl or another local library directory,  won't be available.  The user can't run  directly out of the local library  directory because  won't be set correctly to find its dependencies.\n","There are many ways to solve this problem.  One approach is to use a  file.  The following  file checks to see if the executing script appears to be installed in a\nlocal library that follows the  convention.  If so, it  adds the proper library path to :\n","That lets the user switch Perlbrew perls but still run the original  program via an alias.\n","The  that is run via the alias has a shebang line () that invoke the original perl, which will run , which will fix up  and then  will run successfully, finding its dependencies in .\n"],"pre":[{"code":"$ perlbrew install perl-5.14.2 --sitecustomize \/path\/to\/customize.pl\n"},{"code":"$ perlbrew lib create ack\n$ perlbrew use perl-5.14.2@ack\n$ cpanm App::Ack\n"},{"code":"use strict;\nuse Config;\nuse Cwd ();\nmy %seen;\nmy @bindirs =\n  grep { defined && !$seen{$_}++ } \n  map { $Config{\"install\". $_} }\n  map { (\"${_}bin\", \"${_}script\") } \"\", \"site\", \"vendor\";\n\nmy $script = Cwd::realpath($0);\n\nif ( ! grep { \/\\Q$script\\E\/ } @bindirs ) {\n  my @path = split \"\/\", $script;\n  if ( @path > 2 ) { # at least \/bin\/foo\n    pop @path; # get rid of script filename\n    my $installbase = join(\"\/\", @path[0 .. $#path-1], 'lib', 'perl5');\n    if ( $path[-1] eq 'bin' && -d $installbase ) {\n      require lib;\n      lib->import($installbase);\n    }\n  }\n}\n"},{"code":"$ alias ack=`which ack`\n$ perlbrew use perl-5.10.2\n$ ack PATTERN\n"}]}}},{"id":"https:\/\/perlbrew.pl\/Release-0.98.html?965d801e174bd3416d63af78b45f210705d41101","link":{"@attributes":{"rel":"alternate","href":"https:\/\/perlbrew.pl\/Release-0.98.html","type":"text\/html"}},"title":"Perlbrew Release 0.98","published":"2023-08-11T23:29:17+09:00","author":{"name":"gugod"},"content":{"@attributes":{"type":"xhtml"},"div":{"p":"perlbrew 0.98 was released at 2023-08-11T22:54:38+0900 with these  changes:\n","ul":{"li":["Remove the support of cperl from  and  command. Github PR: #777. cperl can still be installed by specifying the tarball, just not by their short names.\n","new command: make-shim\n","new command: make-pp.\n"]}}}},{"id":"https:\/\/perlbrew.pl\/Release-0.97.html?47cef6364ee955d4832a403cd5d0ee90ce303ab1","link":{"@attributes":{"rel":"alternate","href":"https:\/\/perlbrew.pl\/Release-0.97.html","type":"text\/html"}},"title":"Perlbrew Release 0.97","published":"2023-05-12T23:47:16+09:00","author":{"name":"gugod"},"content":{"@attributes":{"type":"xhtml"},"div":{"p":"perlbrew 0.97 was released at 2023-05-12T22:33:42+0900 with these  changes:\n","ul":{"li":["Thanks to our contributors: Elvin Aslanov, Graham Knop, Shoichi Kaji, Tomasz Konojacki, brian greenfield\n","The documentation of  and  are improved.\n","No longer depends on Pod::Parser. Github PR #760\n","Bugfix for csh users: Github PR #770\n"]}}}},{"id":"https:\/\/perlbrew.pl\/Release-0.96.html?77b016ff24f4757a27b6dd0ded01d927cbceb21b","link":{"@attributes":{"rel":"alternate","href":"https:\/\/perlbrew.pl\/Release-0.96.html","type":"text\/html"}},"title":"Perlbrew Release 0.96","published":"2022-08-01T09:14:07+09:00","author":{"name":"gugod"},"content":{"@attributes":{"type":"xhtml"},"div":{"p":"perlbrew 0.96 was released at 2022-07-31T15:42:39+0900 with these changes:\n","ul":{"li":["Thanks to our contributors: Rolf St\u00f6ckli\n",{"code":"install-cpm"},"Let  hint for  when PERLBREW_ROOT does not exist. .RT #57669.\n","Reveal the actual error code of curl\/wget etc. Github issue #748.\n"]}}}},{"id":"https:\/\/perlbrew.pl\/Release-0.95.html?bd639c4992008ac63d93b6509549886ef7cbce5c","link":{"@attributes":{"rel":"alternate","href":"https:\/\/perlbrew.pl\/Release-0.95.html","type":"text\/html"}},"title":"Perlbrew Release 0.95","published":"2022-05-16T00:08:58+09:00","author":{"name":"gugod"},"content":{"@attributes":{"type":"xhtml"},"div":{"p":"perlbrew 0.95 was released at 2022-05-15T22:59:11+0800 with these  changes:\n","ul":{"li":["Thanks to our contributors: Leon Timmermans\n","Now we use metacpan api for fetching perl versions and for downloading. Github PR #743\n",{"code":"--verbose"},"Avoid perl test errors when NO_COLOR is set. Github PR #738\n"]}}}},{"id":"https:\/\/perlbrew.pl\/The-Discussion-forum-of-perlbrew-project.html?61e416f132705ec11c566899732136589d322b4e","link":{"@attributes":{"rel":"alternate","href":"https:\/\/perlbrew.pl\/The-Discussion-forum-of-perlbrew-project.html","type":"text\/html"}},"title":"The Discussion forum of perlbrew project","published":"2021-12-05T19:58:23+09:00","author":{"name":"gugod"},"content":{"@attributes":{"type":"xhtml"},"div":{"p":["There has never being a online forum \/ discussion channel for general questions for perlbrew projects and therefoe such needs are dispatched to... everywhere.\n","From time to time, people also use GitHub issue as the channel for Q and A... because it seems feasible. I also don't mind having general discussions via that interface becaues... well, I'm not really the everything-has-to-be-tidy-up kind of guy.\n","That said.. a while ago I've discovered the \"Discussions\" feature is added to GitHub and enabled it for the repo \"gugod\/App-perlbrew\":\n","Here: \n","So... now there is only more place for general questions to go. Interface-wise it seems to be identila to GitHub issues. Since it is essentially free (it does not cost me extra mony to enable such feature) I'll just leave it on.\n","Feel free to just drop by and share how perlbrew is useful  o you (or how it isn't -- that's cool too.)\n"]}}},{"id":"https:\/\/perlbrew.pl\/Release-0.94.html?cfe3cbcbe7a11ffec31fc56698c7693942dc1d72","link":{"@attributes":{"rel":"alternate","href":"https:\/\/perlbrew.pl\/Release-0.94.html","type":"text\/html"}},"title":"Perlbrew Release 0.94","published":"2021-12-05T08:56:34+09:00","author":{"name":"gugod"},"content":{"@attributes":{"type":"xhtml"},"div":{"p":"perlbrew 0.94 was released at 2021-12-05T08:39:16+0900 with these  changes:\n","ul":{"li":"Let  print version numbers when doing upgrades. Github issue #678.\n"}}}},{"id":"https:\/\/perlbrew.pl\/Release-0.93.html?868d199c24fd4214768d7071a8e01fcffa66e145","link":{"@attributes":{"rel":"alternate","href":"https:\/\/perlbrew.pl\/Release-0.93.html","type":"text\/html"}},"title":"Perlbrew Release 0.93","published":"2021-11-22T23:52:02+09:00","author":{"name":"gugod"},"content":{"@attributes":{"type":"xhtml"},"div":{"p":"perlbrew 0.93 was released at 2021-11-22T23:09:25+0900 with these  changes:\n","ul":{"li":["Let  takes just one arguments and mean 'cloning modules from that perl'.\n","Let  and  map certain output to their representative module name. Github issue #722\n",{"code":["exec","--with"]}]}}}},{"id":"https:\/\/perlbrew.pl\/Installation.html?5d2478b2a08da3116ab0ae3d4152fd730248f9d5","link":{"@attributes":{"rel":"alternate","href":"https:\/\/perlbrew.pl\/Installation.html","type":"text\/html"}},"title":"Installation","published":"2021-06-19T16:28:18+09:00","author":{"name":"gugod"},"content":{"@attributes":{"type":"xhtml"},"div":{"p":["Copy & Paste this line into your terminal:\n","Or, if your system does not have curl but something else:\n","If you prefer to install with cpan, there are two steps:\n","If it is installed with cpan, the perlbrew executable should be installed as\n or . For all users who want to use\nperlbrew, a prior  needs to be executed.\n","The default perlbrew root directory is , which can be changed\nby setting  environment variable before the installation and\ninitialization. For more advanced installation process, please read .\n","If you use  there is sparrow plugin named  to install perlbrew. It's poorly tested but proved to be working for Ubuntu\/Debian platforms.\n","If you are using Windows, please take a look at \n"],"pre":[{"code":"\\curl -L https:\/\/install.perlbrew.pl | bash\n"},{"code":"# Linux\n\\wget -O - https:\/\/install.perlbrew.pl | bash\n\n# FreeBSD\n\\fetch -o- https:\/\/install.perlbrew.pl | sh\n"},{"code":"sudo cpan App::perlbrew\nperlbrew init\n"}],"h3":"Install, other ways\n"}}},{"id":"https:\/\/perlbrew.pl\/Release-0.92.html?552632d99a2fc7e7bef6b89f79e787df2f4cc551","link":{"@attributes":{"rel":"alternate","href":"https:\/\/perlbrew.pl\/Release-0.92.html","type":"text\/html"}},"title":"Perlbrew Release 0.92","published":"2021-04-15T23:59:40+09:00","author":{"name":"gugod"},"content":{"@attributes":{"type":"xhtml"},"div":{"p":"perlbrew 0.92 was released at 2021-04-15T23:53:55+0900 with these  changes:\n","ul":{"li":["Thanks to our contributors: chee\n","Fix a message mentioning fish config. GitHub PR #712\n","Fetch cperl releases from  instead\n","Let  command accept  and skip running module tests\n"]}}}},{"id":"https:\/\/perlbrew.pl\/Release-0.91.html?964be9f1be7c365c0f06c7aef1da9fdb76735178","link":{"@attributes":{"rel":"alternate","href":"https:\/\/perlbrew.pl\/Release-0.91.html","type":"text\/html"}},"title":"Perlbrew Release 0.91","published":"2021-01-31T17:28:51+09:00","author":{"name":"gugod"},"content":{"@attributes":{"type":"xhtml"},"div":{"p":"perlbrew 0.91 was released at 2021-01-31T17:10:27+0900 with these  changes:\n","ul":{"li":"Fix META info included in 0.90. No other feature changes.\n"}}}},{"id":"https:\/\/perlbrew.pl\/Release-0.90.html?3291ca5b7d3c2061540315f4f29f8761c0d4b402","link":{"@attributes":{"rel":"alternate","href":"https:\/\/perlbrew.pl\/Release-0.90.html","type":"text\/html"}},"title":"Perlbrew Release 0.90","published":"2021-01-29T09:53:50+09:00","author":{"name":"gugod"},"content":{"@attributes":{"type":"xhtml"},"div":{"p":"perlbrew 0.90 was released at 2021-01-29T09:43:17+0900 with these notable changes:\n","ul":{"li":["Thanks to our contributors: Mose Schmiedel, gucchisk\n","The output of 'available' command is split into sections of different type of distributions. Github issue #646.\n","Let the output of  be the short usage. Github issue #647\n","Unbreak env script for fish users. GitHub PR #698 and #708\n","Prefer https URLs of www.cpan.org\n"]}}}},{"id":"https:\/\/perlbrew.pl\/Dealing-with-shebangs.html?e8a92b77cf793dd793e83c70adde31420374e6ae","link":{"@attributes":{"rel":"alternate","href":"https:\/\/perlbrew.pl\/Dealing-with-shebangs.html","type":"text\/html"}},"title":"Dealing with shebangs","published":"2020-10-29T09:03:40+09:00","author":{"name":"gugod"},"content":{"@attributes":{"type":"xhtml"},"div":{"p":["In the POD of perlrun, we can find two possible perl program preambles that tries to use the environment-decided perl installation, one is very cryptic: \n","The other is extremely simple:\n","Basically they are both telling the OS (that understands the shebang) to find the first \"perl\" executable in the list of $PATH, and  that program by appending the current file name after the shebang. The first snippets runs , the second runs . Neither of them invokes \"perl\" directly, like this shebang you'll find in most perl programs:\n","This is because most UNIX-like systems (especially Linux) comes with perl installed at . Some UNIX does not have perl by default, but can be easily installed latter on. Just that they might end up being at . Usually perl programmers call them \"system perl\".\n","A developer might install their own version of perl to anywhere like  or  or any other fancy paths. An put the bin path to the beginning of  environment variable so that when they run perl programs as , it'll invoke their own version of perl, not the system perl. There is no special names for such perl installation, let's call them as \"env perl\" in the article.\n","perlbrew rely on this mechanism to be functional properly. Whenever you say , perlbrew locates the path of 5.14.2 perl binary, and modify  to point to there. Running perl programs with env perl requires you type \"perl\" in the beginning of the command. Relying shebang lines in the code does not.\n","The shebang schema is like Dokodemo Door, a convention that brings huge convenience to easily specify an compiler + runner of the code. Without this design, scripting\/dynamic language authors might just create their own conventions.\n","However, it also creates problems. A cross-platform perl program might not be set be executable because the shebang line is valid on the author's platform, but not on the users' environment. A perl program authored on Mac can simply put  in the first line, but once that program gets copied to FreeBSD, perl can only be found at . The user intend to run the program should modify the code a little bit in order to make it a valid executable. Which really invalids the statement that \"perl programs are cross-platform.\"\n","Well, that sounds like picking bones from a egg. Developers will eventually learn that they can either symlink perl around, or have some fancy scripts that properly modify shebang in-place. True. However when a program does not run because of a invalid shebang line, it can be really frustrated for newbies\n","Sadly, there is really no perfect cross-platform shebang that works for all UNIX-like systems.\n","However, CPAN distributions built with  solves this issue in a very good way. When perl programs are distributed \/ installed as a CPAN distribution, its shebang line are rewritten to be the same perl that used to invoke cpan client itself. Or, if you download+extract a CPAN distribution on your own and run  to do manual installation, it will be your env perl.\n","Since shebang is hard to be cross-platfrom, it is also not trivial to decide what to put on the perlbrew executable shebang. You'll find that it currently contains . However, the true is, when users runs this installer:\n","The downloaded perlbrew will be modified to use your system perl shebang. To be more specific, it is the pre-perlbrew env perl shebang. That means .\n","You might remember that it used to be just . But that has at least 2 drawbacks:\n","Therefore, it is the best to let  itself fixed to use system perl shebang. You may leave your own program to use the env shebang so that it can be invoked with env perl, which is managed with perlbrew. Optionally, you might want to hard-coded a perlbrew perl shebang in your code for some use cases.\n","Shebang is cool. It even feels like a cool word to be spoken. But having to manage shebang in programs really sucks. \n"],"pre":[{"code":"#!\/bin\/sh\n#! \u2212*\u2212perl\u2212*\u2212\neval 'exec perl \u2212x \u2212wS $0 ${1+\"$@\"}'\n    if 0;\n"},{"code":"#!\/usr\/bin\/env perl\n"},{"code":"#!\/usr\/bin\/perl\n"},{"code":"curl -kL http:\/\/install.perlbrew.pl | bash\n"}],"ol":{"li":["CentOS Linux comes without , but only  (well, the same for many other UNIXs)\n",{"code":"perlbrew use perl-5.6.0"}]}}}},{"id":"https:\/\/perlbrew.pl\/Deploying-Perl-bindings-from-tools-installed-with-Homebrew-on-OS-X.html?579036a659d3b285b7fcd0cdae147e3fc204af23","link":{"@attributes":{"rel":"alternate","href":"https:\/\/perlbrew.pl\/Deploying-Perl-bindings-from-tools-installed-with-Homebrew-on-OS-X.html","type":"text\/html"}},"title":"Deploying Perl bindings from tools installed with Homebrew on OS X","published":"2020-10-29T09:03:19+09:00","author":{"name":"gugod"},"content":{"@attributes":{"type":"xhtml"},"div":{"p":["by  Lieven Hollevoet \n","I have been using Perlbrew happily on OS X to install custom\/recent Perl versions. Sometimes I need a more or less exotic Perl binding that I could easily install using Homebrew. Recent updates to Homebrew made that process a bit less automatic.\n","Below I describe how to install the perl-shared binding for RRDTool on a recent OS X with a recent version of Homebrew.\n","There are two issues with the combination of Perlbrew and Homebrew:\n  Latest versions of Homebrew work in a sandbox environment. This means that the build chain has no write permissions to the folder that contains the Perlbrew site modules.\n","This can be forced by passing to  the option . For more information and the discussion about this please see the last posts in this .\n","When you're install a packet with brew, the sandbox seems to prohibit writes to other folders than the target folder for the brew process. This means that if a packet creates a Perl module, this module cannot be written to the Perl site module folder. To work around that: \n  navigate to the build folder yourself and install the perl module.\n",{"code":"brew install --env=std --build-from-source --keep-tmp rrdtool"},"Then navigate to the temp folder where the build results are retained. The full path is listed in the output of the previous command.\n","Go into the subfolder  and do  there. You'll see the RRDs.pm nicely be deployed into your favorite Perl version module folder.\n","I've  this with a developer from Homebrew. \n"],"h2":["Why is it not working automatically\n","Practical example for RRDtool\n","References\n"],"h3":["Detect locally-installed Perl version\n","Work around the sandbox\n"]}}},{"id":"https:\/\/perlbrew.pl\/Reinstall-All-Modules-On-New-Perl.html?520c4bb30f1f9056794e9ce14762932f14b5604b","link":{"@attributes":{"rel":"alternate","href":"https:\/\/perlbrew.pl\/Reinstall-All-Modules-On-New-Perl.html","type":"text\/html"}},"title":"How To Reinstall All Modules On New Perl","published":"2020-10-23T10:16:29+09:00","author":{"name":"gugod"},"content":{"@attributes":{"type":"xhtml"},"div":{"p":["Sometimes when you install a new perl version, you want to put all the modules you were using on a previous version onto your new perl install.\n","You can easily get the list of modules in the current perl installation with  command:\n","That simply prints out module names that you can use latter.\n","Since , it is possible to use the  command to reinstall all the modules from a Perl instance to another.\n","For instance:\n","will  all modules from instance  to instance .\n","For  version prior to  or in case the \ndoes not what you need, the following one liner can pipe all modules from one\ninstance of Perl to another one asking  to install each one on the latter:\n","The  command is particularly helpful to run any program as if it is in the\nenvironment of the specified perl installations. \n","Get more details running the  command:\n"],"pre":[{"code":"perlbrew use perl-5.8.8@foo-project\nperlbrew list-modules\n"},{"code":"perlbrew clone-modules 5.26.1 5.27.7\n"},{"code":"perlbrew list-modules | perlbrew exec --with perl-5.16.2@foo-project cpanm\n"},{"code":"perlbrew help list-modules\nperlbrew help exec\nperlbrew help clone-modules\n"}]}}},{"id":"https:\/\/perlbrew.pl\/Release-0.89.html?d8b71c2394200ca9d7c2688ccc04961af438c3e2","link":{"@attributes":{"rel":"alternate","href":"https:\/\/perlbrew.pl\/Release-0.89.html","type":"text\/html"}},"title":"Perlbrew Release 0.89","published":"2020-10-19T10:07:30+09:00","author":{"name":"gugod"},"content":{"@attributes":{"type":"xhtml"},"div":{"p":"perlbrew 0.89 was released at 2020-10-19T09:26:19+0900 with these notable changes:\n","ul":{"li":["Thanks to our contributors: H\u00e5kon H\u00e6gland, Nicolas R, Peter Tripp\n","Make the bashrc compatible with 'bash -u'. Github PR #694\n","Prevent build directory from being overwritten. Github PR #683\n"]}}}},{"id":"https:\/\/perlbrew.pl\/Release-0.88.html?7abbaa95bfcc7a675d32eba5ff44863f0994e9c9","link":{"@attributes":{"rel":"alternate","href":"https:\/\/perlbrew.pl\/Release-0.88.html","type":"text\/html"}},"title":"Perlbrew Release 0.88","published":"2020-01-29T22:11:37+09:00","author":{"name":"gugod"},"content":{"@attributes":{"type":"xhtml"},"div":{"p":"perlbrew 0.88 was released at 2020-01-29T21:40:07+0900 with these notable changes:\n","ul":{"li":["Thanks to our contributors: Dave Rolsky, Gil Magno, Zhu Sheng Li\n",{"code":"install"},"Fix: The .tar.bz2 suffix are removed from the output ouf  PR #685\n"]}}}}],"updated":"2025-07-18T21:35:49+09:00"}