Join devRant
Do all the things like
++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatar
Sign Up
Pipeless API
From the creators of devRant, Pipeless lets you power real-time personalized recommendations and activity feeds using a simple API
Learn More
Search - "fucking perl"
-
So, you start with a PHP website.
Nah, no hating on PHP here, this is not about language design or performance or strict type systems...
This is about architecture.
No backend web framework, just "plain PHP".
Well, I can deal with that. As long as there is some consistency, I wouldn't even mind maintaining a PHP4 site with Y2K-era HTML4 and zero Javascript.
That sounds like fucking paradise to me right now. 😍
But no, of course it was updated to PHP7, using Laravel, and a main.js file was created. GREAT.... right? Yes. Sure. Totally cool. Gotta stay with the times. But there's still remnants of that ancient framework-less website underneath. So we enter an era of Laravel + Blade templates, with a little sprinkle of raw imported PHP files here and there.
Fine. Ancient PHP + Laravel + Blade + main.js + bootstrap.css. Whatever. I can still handle this. 🤨
But then the Frontend hipsters swoosh back their shawls, sip from their caramel lattes, and start whining: "We want React! We want SPA! No more BootstrapCSS, we're going to launch our own suite of SASS styles! IT'S BETTER".
OK, so we create REST endpoints, and the little monkeys who spend their time animating spinners to cover up all the XHR fuckups are satisfied. But they only care about the top most visited pages, so we ALSO need to keep our Blade templated HTML. We now have about 200 SPA/REST routes, and about 350 classic PHP/Blade pages.
So we enter the Era of Ancient PHP + Laravel + Blade + main.js + bootstrap.css + hipster.sass + REST + React + SPA 😑
Now the Backend grizzlies wake from their hibernation, growling: We have nearly 25 million lines of PHP! Monoliths are evil! Did you know Netflix uses microservices? If we break everything into tiny chunks of code, all our problems will be solved! Let's use DDD! Let's use messaging pipelines! Let's use caching! Let's use big data! Let's use search indexes!... Good right? Sure. Whatever.
OK, so we enter the Era of Ancient PHP + Laravel + Blade + main.js + bootstrap.css + hipster.sass + REST + React + SPA + Redis + RabbitMQ + Cassandra + Elastic 😫
Our monolith starts pooping out little microservices. Some polished pieces turn into pretty little gems... but the obese monolith keeps swelling as well, while simultaneously pooping out more and more little ugly turds at an ever faster rate.
Management rushes in: "Forget about frontend and microservices! We need a desktop app! We need mobile apps! I read in a magazine that the era of the web is over!"
OK, so we enter the Era of Ancient PHP + Laravel + Blade + main.js + bootstrap.css + hipster.sass + REST + GraphQL + React + SPA + Redis + RabbitMQ + Google pub/sub + Neo4J + Cassandra + Elastic + UWP + Android + iOS 😠
"Do you have a monolith or microservices" -- "Yes"
"Which database do you use" -- "Yes"
"Which API standard do you follow" -- "Yes"
"Do you use a CI/building service?" -- "Yes, 3"
"Which Laravel version do you use?" -- "Nine" -- "What, Laravel 9, that isn't even out yet?" -- "No, nine different versions, depends on the services"
"Besides PHP, do you use any Python, Ruby, NodeJS, C#, Golang, or Java?" -- "Not OR, AND. So that's a yes. And bash. Oh and Perl. Oh... and a bit of LUA I think?"
2% of pages are still served by raw, framework-less PHP.32 -
Lead dev walks in:
"Remember what I said about doing dumb shit solutions in languages that no one understands?"
Me: "Yes.....why?"
Him: "That reporting script you did for <x department> needs some modifications and you decided for whatever fucking obscure reason to do it in perl"
Me: "I felt......experimental"
Him: "Well yes, that is cool and all but it needs some modifications as per <X director> and only your dumbass knows perl because you are just too fucking cute aren't ya?"
Me: "You think I am cute??? <insert spongebob blushing meme>"
Him: "I fucking hate it when you write shit in perl"
In my defense, it was a really short fucking script
For clarification: This was a friendly convo even though it doesn't sound like it. He is actually my employee, and a rather close friend, so there is that level of trust and comraderie29 -
Lead dev: Hey boss, you really do like Python right?
Me: No
Lead dev: Well it's cuz I was think....wait what? WTF do you mean no, you have automated a fuckload of BS with Python and we are still using it, why tf would you use Python if you don't like it?
Me: I like it enough for the automation scripts that we have and for parsing documents or generating glue scripts, its already installed in every server that we have, so testing bs in dev and then using them in prod is cake, it doesn't mean I LOVE python, I like it for what we use it.
Lead dev: Well ain't already bash and perl installed as well?
Me: Do you know bash and or perl?
Lead dev: No, don't you?....
Me: No......
L Dev: (using a Jim Carrey impersonation) WELLL ALLRIGTHY THEN! What is the other language that you used for X project?
Me: Clojure, do you remember that one?
* he said paren paren paren paren yes paren i space paren do close paren close paren etc etc
L Dev: (((((((yes (i (do)))))))) and nevermind, I'll get back to working more with Python
Me: das what I fucking thought esse6 -
Supervisor: so you're going to write a perl script that will compile a jar that will be used to invoke a web service
Me: okay. What does the web service do?...
Supervisor: I'm not sure how it works. It'll just return a success or error code
Me: so I'm just going to invoke a black box?
Supervisor: that's a good way to think of it
Me: so how does the qa process work with this black box/how can we debug?
Supervisor: we don't have qa for it and we can't debug
What the fuck?!?!? You expect me to call a literal fucking black fucking box?!?! This isn't lambda calc you jabroni.2 -
*gets annoyed by how vi command in Ubuntu WSL points to vim*
To be clear, that's due to update-alternatives in Ubuntu, not WSL specifically.
*le me ducking how to install vi instead, because vim in WSL has scrolling issues*
"install vi ubuntu"
> How do I install and get started with vim/vi? - Ask Ubuntu
> apt - Vim installation in Ubuntu 14.04 - Ask Ubuntu
> Ubuntu Linux: Install vim Text Editor - nixCraft
-.- I'm not looking for vim ffs, I already have that installed.
"install vi ubuntu -vim"
> Same fucking results
"!g install vi ubuntu -vim"
> Installing the VI Perl Toolkit from Source Code—Linux - VMware
> FedoraDirectoryServerClientHowto - Community Help Wiki - Ubuntu …
> Learn How To Use Linux vi Editor And Its Commands - LinOxide
Oh for fuck's sake!!!
So here's my question because apparently search engines clearly can't point me to it, and Ubuntu doesn't seem to have vi as "vi" in their repositories either. Do our Canonical overlords allow people to actually make /usr/bin/vi actually be fucking vi?11 -
1) For other devs to stop being such whiny, pussy ass motherfuckers. Legit the ammount of whine in some of y'all is too extreme. Blow, judge and cuss out over the weakest shit ever. Like language wars. Dear lord if there is some pussy ass shit right there it is language wars.
2) To see Perl 6, Clojure and Rust see some hardcore adoption. Specially Clojure since I fucking love Lisp dialects and Clojure is pretty sweet Lisp. Clojurescript is also really nice for those that like working with Js.
3) To completely nuke Microsoft browsers. I am not a Microsoft hater by any means. But their browsers bring more pain than joy to everyone and they know it. If they choose to let them exist then by all means fix them! This is Microsoft! They got the resources!!
That's it really.12 -
So, I applied for a job. People tend *not* to answer my applications, probably because my resume very clearly states I implemented malloc in fasm, among other things.
I imagine them going like "Sir, this is a Wendy's", or rather "we're looking for a 10X rockstar AnalScript ZAZQUACH mongoose-deus puffery quarter-stack developer". Fair enough, I certainly don't fit that bill.
But this time I not only got an answer, the guy went like "I'm impressed". Is this... recognition? From a human? What?
Fellas, I cannot process this emotion. Being frank, it's not even about the job. But willfully going against the idiocy of the industry standard, and then seeing that utterly deranged move actually amounting to something -- no matter how small -- is quite uncanny.
And of fucking course, it's a Perl job. Figures. Great minds think alike.3 -
Debugging a request that got lost in a myriad of containers of a scaled application....
It wouldn't be worth a rant if there wasn't some kinky SM stuff in it, wouldn't it?
Regexes. The fucker who wrote a lot of the NGINX (🤢) configuration decided to use the Perl Regexes with named group matching. A lot.
So now I have to fight wild variables supposedly coming from nowhere (as they stem from the named groups)… fucking single location redirects instead of maps.... A d have to write an explanatory documentation while going down the rabbit hole of trying to find out where the fuck that shitty frigging bastard redirected wrong.
I really wish I could eradicate the person who wrote this shit....1 -
My college teaches us perl now😑
Being in a college whose curriculum is 10 years old is fucking sick.
I mean really 10 fuckin years old.. Dude this is computer science field, shit changes so fast here, new languages, new standards, new frameworks and these guys don't give shit about that.
Wasting so much of my time attending these shit classes because i have to maintain 75% attendance in every subject or else i wont be allowed to write an exam.
FML5 -
Here's an idea: starting my own botfarm to automatically downvote obnoxious adbots that simply won't stop tickling our collective fucking testicle sax with unrequited love stories and crypto bullshit.
To detect the sheeit, just look for idiot giving contact info in a rant about hacking the device of your unfaithful spouse/treacherous cyber girlfriend who also ran a bitcoin scam and fucked you in the ass with a welding torch. That should do the trick, I can give you that power with a perl script, because fuck you that's why.
But since there is no moderation in this bitch, daring to offer me sufficient knowledge to the inner workings of such a construct would be exceptionally perilous to your asshole. That is to say, nothing could then stop me from redirecting said botfarm to target my enemies and anally assault their every rant and comment.
Indubitably, this would in turn quickly spiral into digital warfare of cyberfeudal lords pitting their automated fake accounts against each other. Millions will die. Upside being hexical gets to pull the plug without guilt.
What do you say? Should we begin the apocalypse?19 -
300 global variables.. THREE HUNDRED FUCKING GLOBAL VARIABLES?
Are you for real?
Now let me check the line numbers again..
hmm.. line 97 to .. yep line 410, just a few new lines to seperate some of them or.. group? Idk, I've given up on trying to understand those.
Now you may ask "But ThatPerlDeb, where did you see this and what was the intention?"
Low and behold, take a chair and I may explain this to you.
First of all: Fuck the dev that wrote this!
Second: Fuck all the devs that kept up with this practice or whatever you want to fucking call this!
Now, the application is our POS system that our customers can use for a monthly fee (That this piece of garbage even requires payment is disgusting) but anyway..
The global variables sometimes are declared for labels, sometimes for some frames, sometimes just for random values to be there.
We're using Perl for the POS system and Perl ain't the best at OOP, so in the dev's defense I can understand why you'd use a few global variables, but not fucking 300!! FUCK OFF WITH THIS BULLSHIT!!
So now I'm going through this torture slowly but surely deleting globals and putting them into some sort of scope and always MANUALLY test if something broke. Again, this company sucks ass and there's nothing that could even be considered a "unit test" or something like that, so fuck that, too.
After two hours I've brought down the count of global variables to about 260, so there's progress being made..
But then, there comes more!
"But how???" you may ask, and you're right, I've asked that myself.
Now to resolve the global stuff in each file some of the initial globals are used, we got about 20-30 files which do different stuff, all fair and square, at least there was an attempt at seperating functions but god this mess is so fucking fucked up. So in order to "safely" delete a global variable I have to check if any of the variables are used in another file, and if so, in which scope and how they are used.
Spaghetti would be a compliment for this fucking disgusting piece of utter bullshit.
Let alone the code quality of this "code"
Indendation? Dafuq is dat?
Scope? Nah, we got everything global anyway
Function size? Well, some are 5 lines, some are 900 lines, who cares anyways, right?
I'm so fucking glad once I leave this shithole, for real.6 -
I am a big fan of the Go programming language. I really am. From syntax to the purpose and everything in between, I dig the language. I normally use it as a hobby language. My escape from my daily dosis of php, js and Java.....or when my workplace insists on believing that I am a designer instead of a developer........I am definitely not a designer....I am super slow at design.
But back at my main topic! Go. The language is cool, the environment is cool and it is booming here in the states.......can we PLEASE PRETTY PLEASE WITH CHERRIES ON TOP change the stupid mascot logo? I swear that thing looks absolutely fucking retarded. Much like the Perl 6 Mascot......I know this is a small thing but looking at that stupid "gopher" really irritates the fuck out of me. Coolest logo ever? Rust or Python really.6 -
You know what a fucking good place for 1000s of mp4s, pdfs, doc files, exes and svgs is? Yeah, the bloddy SVN,which mirrors to git.
And how about a ibm websphere install zip with tiny 1.3gb?
And of cause you store your fuckin perl and Shellscripts, that have been written by a plain lunatic and that are responsible for installing the crap in the repo.
What? One repo for one component? Nah, cramp like 150 different projects into on repo.
And the most important scripts have to be kept unversionized ... For reasons.
And this is just the tip of the iceberg of shit.
Btw. websphere ships its own apache2.2 and its own security lib and its own openssl compilation, with ibm java ... Filesystem hierarchy standard? Dafuq? If you want to find something it better be like where is waldo - right, IBM? And command arguements? Man pages, usable documentation, usable deployment? How did any of this ever seem like a good idea to anyone?
Go get a koloscopy with a submarine periscope, IBM. -
I spent the whole day coding in python (usually I code in php or perl) and this language is a fucking joke. C'mon, why everything have to be done in such a weird way? And don't say it's python way because it's bullshit way. Want some examples?
", ". join(str(x) for x in array)
to join array of integers. wtf is that?
True|False
why in hell you need the first letter to be uppercase when your own fucking standard says to use lowercase letters in eg. var names and method names. why?
math.isnan(float(x))
to check if a variable (expected to be integer) is NaN. I won't fucking comment that...
Even prolog don't have such stupid things6 -
How do you get over the bad times? I keep having to work with shitty legacy systems that were written in perl and flash in the 90s, but my boss keeps telling me "No" on redoing some of the bigger stuff even though it is really needed. I mean, that is your goal here, right? Rebuilding this POS? FFS you still stored passwords in plain text twoo weeks ago! But no, you's rather dig around in Perl than upset some random user because his fucking interface looks different.
But then I also have to work with another system that I could redo in Cake/Laravel in two weeks (it's literally getting and writing data to one table, so two views and user auth), and the previous dev just... made a huge mess. I mean, why would you need to post data asynchronously when it's this one stupid form ? Just do a regular form submit? And the system is really not suitable for extending, because everything is in the database, EVERYTHING! Like, html form inputs? So to add a simple input to the template I have to create a new input type in the types table and then add that to the form structure table? Only to have the input checked by fucking regex? REGEX! Why? Seriously, this is not some high end CMS that needs this level of code reusability No. This is a simple fucking form.
And I can't get it to work. No documentation of course. No comments, either. All of this makes me feel like I'm just the shittiest dev ever. I feel dumb, and useless. Haven't turned on my private PC in weeks because I see no reason to work on any of my own stuff.
I used to have a job, working with Magento and Wordpress. And yeah, it was horrible, it was chaos, but it was fun and I was great at it. I bent that motherfucking system to fit my needs. People respected my opinion, they were convinced I could program this and that, and I proved them right. Did I make mistakes? Hell yeah. Did I give up? Fuck no!
But now, I just feel like I can't even write a simple fucking form any more. I'm just so close to giving up on development as a whole, even though I love it so much.5 -
By far one of the most non toxic communities has to be that of perl monks. The community is amazingly welcoming of new people and the shit that these dudes talk about is so fucking interesting. That one is definitely one of the last remaining "hacker" communities still going around the net. Really wish there was Perl around where I live. One would be lucky to find a programming job, let alone one in such language.1
-
I'm using fucking Fortran 77 and Perl
The government needs to start funding nuclear or I will beat a bitch -
There are a couple:
A system that updates user accounts to connect them into our wifi system by parsing thousands of processing files written in Clojure. The project was short lived and mainly experimental, It has complete test cases and the jar generated from it is still purring silently on the main application. It was used to replace an $85k vendor application that made no fucking sense. The code has not been touched in 2 years and the jar is still there. The dba mentioned the solution to the vendor, the vendor tried buying it from me, but being that it belongs to the institution nothing was touched, still, it got the VP's attention that I can make programs that would be bought for that level, it caught his attention even more when I showed him the codebase and he recognized a Lisp variant (he is old, and was back in the day a Fortran and Cobol developer)
A small Python categorical ML program that determines certain attributes of user generated data and effectively places them on the proper categories on the main DB. The program generates estimates of the users and the predictions have a 95% correctness rate. The DBA still needs to double check the generated results before doing the db updates. I don't remember how I coded it because I was mostly drunk when I experiment on the scenario. It also got the attention of the VP and director since the web tech manager was apparently doing crazy ML shit that they were not expecting me to do, it made them paranoid that I would eventually leave for a ML role somewhere, still here, but I want more moneys!!
A program that generates PDF documentation from user data, written in Go, Python and Perl (yes Perl) I even got shit from the lead developer since I used languages outside of their current scope of work. Dude had no option but to follow along with it :P since I am his boss
Many more. I am normally proud of my work code. But my biggest moment is my current ntural language processing unit that I am trying to code for my home, but I don't have enough power to build it with my computers, currently, my AI is too stupid, but sometimes it does reply back to my commands and does the things I ask it to do (simple things, opening a browser, search for a song etc) but 7 times out of ten it wont work :P -
I am in-fucking-love with myself and packages contributed to OSS communities!
TL;DR: inotify is great and I am lazy bitch so I wrote a script to kinda do my work
I took some time to write a script that takes a folder with images (Screenshots) and move them somewhere else with the last modify time as their new name (something like "Screenshot_DATE_TIME.png) because my current screenshot software for Windows (Lightshot) only saves their screenshots like this: Screenshot_<Incrementing Number>.
Once in a while I'd like to move those images away to "clean up" that folder, but I always have to create a new folder like "OLD" but that already exists so it becomes "OLD_1" which.. also existed up to "OLD_3" and I finally grew sick of it!
2ish hours later my Perl script now automatically gets triggered by inotify once a new file (Screenshot for that matter) is written or moved to the Screenshot folder and auto-fucking-matically moves it to the "new" folder with the new filename so I don't have the issue of having "OLD_1" .. "OLD_INFINITY" anymore.
Little things / scripts like these really make me feel good about what myself and my coding skills (I know, this is a somewhat trivial task but still a great experience)2 -
Started as a "web dev" with a lot of jquery/Mootools/internal-shit and PHP3/4, PERL, and some C/C++/for modules...
The worst part was the CSS and fucking PSD to integrate with a stupid design...
The PHP present world... -
First job while in college... Was working for web dev team lamp set up before lamp was lamp (year was 2000).
Had deadline one week after summer vacation. Worked non stop a couple of days to get shit done and didn't make it. Got in a conflict with my manager in front of the team and I blew my steam off. Quit on the spot.
Lessons learned:
1. Don't be a fucking idiot when estimating work.
2. Be cool with other teammates, nobody cares about drama and nobody has to feel sorry for you.
3. Uhm, plan? Had entire fucking vacation to get work done. I was a fucking moron.
4. Burning out is stupid and unproductive.
5. Your manager can be as poor in management as you are. Your job is to try to make them better at it, as they have less visibility in the details.
Next job in grad school. Worked for a security company. Direct manager had the bright idea to make execs sign the change requests. WTF. Code was in Perl/php, a mess. Team rewrote back end DB access , taking over six months, or more, failing twice the deadline. After a final 48 hour burn out, we ship and get laid off the week after.
Lessons learned:
1. Don't work for dicks.
2. Don't be a dick yourself.
3. Don't work for dicks.
Third job was in silicon valley. It was a great company, and I stayed there for five years. -
Fuuuuuuuuucking hell. I have a program that parses and generates information from shit I have in a database into a csv file. Shit was simple enough to be done in Python.
Trying to present that shit into fucking pdf files? without drawing shit on x,y coordinates like a retard or without downloading a fucking obscure number of bs shit into the computer? on a fucking WINDOWS machine? fuuuuuuuuuuuuuuck.
Ok no problem. Do it in Node. WHAT IN THE HOLY FUCK more bullshit with drawing shit line by line. fuck this.
Lol not even going to touch java or c# for this, this is quick.
mmmh perl? nah, php? nah
Well shit I just need to generate data from a csv into a html template and send it away as a docume....go? ok lets....ah....done
Go wins again in my book ladies and gentlemen
It even has fewer lines of code than the php experiments8 -
YGGG IM SO CLOSE I CAN ALMOST TASTE IT.
Register allocation pretty much done: you can still juggle registers manually if you want, but you don't have to -- declaring a variable and using it as operand instead of a register is implicitly telling the compiler to handle it for you.
Whats more, spilling to stack is done automatically, keeping track of whether a value is or isnt required so its only done when absolutely necessary. And variables are handled differently depending on wheter they are input, output, or both, so we can eliminate making redundant copies in some cases.
Its a thing of beauty, defenestrating the difficult aspects of assembly, while still writting pure assembly... well, for the most part. There's some C-like sugar that's just too convenient for me not to include.
(x,y)=*F arg0,argN. This piece of shit is the distillation of my very profound meditations on fuckerous thoughtlessness, so let me break it down:
- (x,y)=; fuck you in the ass I can return as many values as I want. You dont need the parens if theres only a single return.
- *F args; some may have thought I was dereferencing a pointer but Im calling F and passing it arguments; the asterisk indicates I want to jump to a symbol rather than read its address or the value stored at it.
To the virtual machine, this is three instructions:
- bind x,y; overwrite these values with Fs output.
- pass arg0,argN; setup the damn parameters.
- call F; you know this one, so perform the deed.
Everything else is generated; these are macro-instructions with some logic attached to them, and theres a step in the compilation dedicated to walking the stupid program for the seventh fucking time that handles the expansion and optimization.
So whats left? Ah shit, classes. Disinfect and open wide mother fucker we're doing OOP without a condom.
Now, obviously, we have to sanitize a lot of what OOP stands for. In general, you can consider every textbook shit, so much so that wiping your ass with their pages would defeat the point of wiping your ass.
Lets say, for simplicity, that every program is a data transform (see: computation) broken down into a multitude of classes that represent the layout and quantity of memory required at different steps, plus the operations performed on said memory.
That is most if not all of the paradigm's merit right there. Everything else that I thought to have found use for was in the end nothing but deranged ways of deriving one thing from another. Telling you I want the size of this worth of space is such an act, and is indeed useful; telling you I want to utilize this as base for that when this itself cannot be directly used is theoretically a poorly worded and overly verbose bitch slap.
Plainly, fucktoys and abstract classes are a mistake, autocorrect these fucking misspelled testicle sax.
None of the remaining deeper lore, or rather sleazy fanfiction, that forms the larger cannon of object oriented as taught by my colleagues makes sufficient sense at this level for me to even consider dumping a steaming fat shit down it's execrable throat, and so I will spare you bearing witness to the inevitable forced coprophagia.
This is what we're left with: structures and procedures. Easy as gobblin pie.
Any F taking pointer-to-struc as it's first argument that is declared within the same namespace can be fetched by an instance of the structure in question. The sugar: x ->* F arg0,argN
Where ->* stands for failed abortion. No, the arrow by itself means fetch me a symbol; the asterisk wants to jump there. So fetch and do. We make it work for all symbols just to be dicks about it.
Anyway, invoking anything like this passes the caller to the callee. If you use the name of the struc rather than a pointer, you get it as a string. Because fuck you, I like Perl.
What else is there to discuss? My mind seems blank, but it is truly blank.
Allocating multitudes of structures, with same or different types, should be done in one go whenever possible. I know I want to do this, and I know whichever way we settle for has to be intuitive, else this entire project has failed.
So my version of new always takes an argument, dont you just love slurping diarrhea. If zero it means call malloc for this one, else it's an address where this instance is to be stored.
What's the big idea? Only the topmost instance in any given hierarchy will trigger an allocation. My compiler could easily perform this analysis because I am unemployed.
So where do you want it on the stack on the heap yyou want to reutilize any piece of ass, where buttocks stands for some adequately sized space in memory -- entirely within the realm of possibility. Furthermore, evicting shit you don't need and replacing it with something else.
Let me tell you, I will give your every object an allocator if you give the chance. I will -- nevermind. This is not for your orifices, porridges, oranges, morpheousness.
Walruses.16 -
You should write comments in your code, and in case of Perl you must write comments in your code.
I've done some DNS zone editing stuff using Perl's magic around 4 years ago and now I have no fucking idea what's going on in there. It's on production DNS server since then, no problems so far... -
Wrote a perl script to spam group sms to my friends, in perl. Also - web scrapers.
Ugly AF stuff. never heard of strict, or warn when I did it.....
really fun times! -
Why oh why it's so fucking hard to update perl on gentoo!?
It just shows how broken portage as become.
And everyone seems to have it's own magic incantation of emerge/qlist
Fucking fuck piece of shit gentoo is becoming2